一、String类的特点
字符串对象一旦初始化就不会被改变,但可以在字符串缓冲区进行共享。
String str1="abc";
str1="def";`
System.out.println("str1="+str1);
如上、字符串abc值没有变,只是变量str1的引用地址变了
String str1=“abc”;
String str2=“abc”;
System.out.println(str1==str2);
如上、引用变量指向字符创缓冲区的值,避免资源浪费
二、String类的构造方法
以下结合API总结常用的构造方法
构建一个空的字符串对象
String str=new String();
System.out.println(str);
构建一个字符串对象
String str=new String(“abcde”);
System.out.println(str);
将字节数组转成字符串对象,默认将按照ascii码值进行转换
byte[] arr= {23,24,65,97};
String str=new String(arr);
System.out.println(“str:”+str);
将字节数组某一部分转成字符串对象,offset是数组下表起始位置,length,是偏移量
byte[] arr= {23,24,65,97,98,99};
String str=new String(arr,3,2);
System.out.println(“str:”+str);
str:ab
将字符数组转换成字符串对象
char[] arr=new char[] {‘a’,‘b’,‘d’};
String str=new String(arr);
System.out.println(str);
将字符数组中部分转换成字符串对象
char[] arr=new char[] {‘a’,‘b’,‘d’,‘h’,‘k’,‘b’};
String str=new String(arr,2,3);
System.out.println(str);
三、其他常用方法
API是常使用的查询文档,可根据方法名以及方法的返回类型选取自己需要的方法。
返回字符串指定索引的字符
String str=“djakdh”;
System.out.println(str.charAt(2));
获取字符串长度,即字符的个数
String s = “abcdae”;
System.out.println(“length:”+s.length());
获取字符或者子字符串在字符串第一次出现的位置,以上四个方法类似
String s = “abcdae”;
System.out.println(“index:”+s.indexOf(‘k’));//0//-1 我们可以根据-1,来判断该字符或者字符串是否存在。
与上面indexOf相反,从后向前找第一次出现的位置
String s = “abcdae”;
System.out.println(“lastIndex:”+s.lastIndexOf(‘a’));//4
获取字符串中的一部分
String s = “abcdae”;
System.out.println(“substring:”+s.substring(2));
System.out.println(“substring:”+s.substring(2,4));
将字符串变成字符串数组(字符串的切割)
String str1=“小强,小王,小刘”;
String[] strArr=str1.split(",");
for (int i = 0; i < strArr.length; i++) {
System.out.println(strArr[i]);
}
将字符串转成字符数组
String s = “张三,李四,王五”;
char[] chs = s.toCharArray();
for (int i = 0; i < chs.length; i++) {
System.out.println(chs[i]);
}
将字符串中的字母转成小写
将字符串中的字母转成大写
System.out.println(“Abc”.toUpperCase());
替换字符串中的字符,或者替换子字符串
String str=“abcdefg”;
System.out.println(str.replace(“ab”, “mn”));
去掉字符串两端的空格
String str=" abcdefg ";
System.out.println(str.trim());
比较字符串大小,考虑大小写
比较字符串大小,忽略大小写
String str=“abc”;
String str2=“ABC”;
System.out.println(str.equals(str2)); //false
System.out.println(str.equalsIgnoreCase(str2)); //true