String、StringBuffer 的使用 ,两个面试问题

时间:2022-07-26
本文章向大家介绍String、StringBuffer 的使用 ,两个面试问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1》统计不同类型字符个数

public static void main(String[] args) {
		//案例:统计不同类型字符个数
		String password = "abZZc23&%Asd^4";
		
		//密码:大写,小写,数字,特殊字符
		
		//1.声明变量
		int big = 0;//大写
		int small = 0;//小写
		int num = 0;//数字
		int other = 0;//特殊字符
				
				
		//2.遍历字符串的字符
		for(int i=0; i < password.length();i++){
			//取字符
			char ch = password.charAt(i);
			System.out.println(ch);
			
			//判断字符是否为大写
			if(ch >= 'A' && ch <='Z'){
				big ++;
			}else if(ch >= 'a' && ch <= 'z'){//判断是否为小写
				small ++;
			}else if(ch >= '0' && ch <= '9'){//判断是否为数字
				//'0' 对应码表的数字是48
				//'9' 对应码表的数字是57
				num ++;
			}else{//特殊字符
				other ++;
			}
		}
		
		System.out.println("大写字母出现的次数:" + big);
		System.out.println("小写字母出现的次数:" + small);
		System.out.println("数字出现的次数:" + num);
		System.out.println("特殊字符出现的次数:" + other);
	}

2》String类转换功能

byte[] getBytes():把字符串转换为字节数组 char[] toCharArray():把字符串转换为字符数组 static String valueOf(char[] chs):把字符数组转成字符串 static String valueOf(int i):把int类型的数据转成字符串 注意:String类的valueOf方法可以把任意类型的数据转成字符串 String toLowerCase():把字符串转成小写 String toUpperCase():把字符串转成大写 String concat(String str):把字符串拼接,且只能拼接字符串。+方式拼接字符串时,可以是任意类型

3》 案例 将一个字符串的首字母 变成大写,其余的字母小写

/*
 * 需求:把一个字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符)
 * 举例:
 * 		helloWORLD
 * 结果:
 * 		Helloworld
 * 
 * 分析:
 * 		A:先获取第一个字符
 * 		B:获取除了第一个字符以外的字符
 * 		C:把A转成大写
 * 		D:把B转成小写
 * 		E:C拼接D
 */
public class StringTest {
	
	public static void main(String[] args) {
		// 定义一个字符串
		String s = "helloWORLD";
 
		// 先获取第一个字符
		String s1 = s.substring(0, 1);
		// 获取除了第一个字符以外的字符
		String s2 = s.substring(1);
		// 把A转成大写
		String s3 = s1.toUpperCase();
		// 把B转成小写
		String s4 = s2.toLowerCase();
		// C拼接D
		String s5 = s3.concat(s4);
		System.out.println(s5);
 
		// 优化后的代码
		// 链式编程
		String result = s.substring(0, 1).toUpperCase().concat(s.substring(1).toLowerCase());
		System.out.println(result);
		
	}
}

4》案例:把int[] arr = {1,2,3} 转成字符串 [1,2,3]

  思路:字符串拼接 首先 新建一个字符串 然后加上 '[' ,循环便利这个数组,然后拼接 字符串,最后判断是否是最后一个,加上 ‘]’

5》String类的其它功能 public String replace(char oldChar, char newChar)//替换字符 public String replace(CharSequence target, CharSequence replacement) //替换字符串 String trim();//去除前后空格 public int compareTo(String anotherString) //比较 public int compareToIgnoreCase(String str) //比较

例子: String s1= "abc"; String s2 = "aac" s1.compareTo(s2):结果+1

6》案例:字符串的反转 String str = "abc"; for(int i = str.length() - 1;i >= 0 ;i--){ System.out.print(str.charAt(i)); }

7》案例:统计大串中小串出现的次数 String str = "helgyfnnnngyfooogyf88"; String name = "gyf";

思路:使用死循环,将匹配道德字符串位置加上匹配子串的长度 ,截取,使用统计变量 统计出现次数

8》StringBuffer的构造方法     >StringBuffer 字符串缓冲区类     >StringBuffer里面的字符序列【char[]】是可以改变的     >String的字符序列是不可以改变

9》StringBuffere的添加方法     >append方法     >insert方法

10》StringBuffer的删除方法     >deleteCharAt(int index) 删除指定索引的字符     >delete(int start,int end): 删除开始到结束位置的字符

11》StringBuffer的反转功能     >reverse()方法,将字符串反转

12》StringBuffer的截取功能     >public String substring(int start): 从指定位置截取到末尾     >public String substring(int start,int end): 截取从指定位置开始到结束位置,包括开始位置,不包括结束位置

13》StringBuffer与String的相互转换     String –> StringBuffer         通过构造方法         通过append()方法     StringBuffer -> String     通过构造方法     通过toString()方法     通过subString(star,end);

14》数组转成字符串,使用StringBuffer实现     int[] arr = {1,2,3} -> [1,2,3]

    思路:循环便利这个数组,然后使用StringBuffer 的append方法来拼接这个字符串 使用if else 判断添加的位置

15》字符串反转,使用StringBuffere的reverse方法实现

16》两首字符串的面试题:     a>StringBuffer和StringBuilder的区别     StringBuffer是jdk1.0版本的,是线程安全的,效率低,加同步锁     StringBuilder是jdk1.5版本的,是线程不安全的,效率高,没有加锁

    b>String 和StringBuffer,StringBuilder的区别     String是一个不可变的字符序列     StringBuffer,StringBuilder是可变的字符序列