首先明确String类的对象代表不可变字符序列。
String类中的常用方法
1.创建String类的对象
String str=new String("周志浩ZZH");
2.输出字符串的长度(这里输出的是字符的个数)
System.out.println(str.length());
3.判断字符串是否为空
System.out.println(str.isEmpty());
4.判断字符串的开头和结尾是否有为参数中的字符串
System.out.println(str.startsWith("zzh"));
System.out.println(str.endsWith("zzh"));
5.将字符串中的字母大写该小写,小写该大写
System.out.println(str.toUpperCase(Locale.ROOT));
System.out.println(str.toLowerCase(Locale.ROOT));
所谓不可变字符序列,就是说使用对象名当调用方法类对str
的字符串进行操作后,str
的字符串是不会改变的,只有你给str
新的指向str=str.toLowerCase(Locale.ROOT);
才会改变str
的字符串。
6.根据索引找子串
(1)char ch=str.charAt(2);
返回值是一个char类型的字符,所以只能找到一个字符。
(2)String substr=str.substring(1,3);
(就该方法的已有参数而言)从索引我1的开始找,找到第(3-1)个结束。
(3)substr=str.substring(3);
如果只给一个参数,那么自动到最后一个字符结束。
7.根据子串确定索引
(1)System.out.println(str.indexOf("zzh"));
返回值是一个int
类型。找到字符串后放回字符串的首字符的索引。如果没有找到放回-1
(2)System.out.println(str.lastIndexOf("zzh",3));
找子串的时候,从后往前找。只是说改变了找的方式,并不能改变字符原有的索引。后面的参数3
表示从后往前找,找到索引为3
结束。
(3)int index=str.indexOf("zzh",8);
从后往前早,从索引为8的字符开始找。
8.其他方法
(1)str=str.replaceAll("zzh","ZZH");
把zzh
全部替换为ZZH
(2)可以去除字符串两边的空格,但无法去除字符串中间的空格。
str=" 周 志 浩 ";
System.out.println(str.length());
str=str.trim();
(3)String->byte[]字节数组
byte[] bytes=str.getBytes();
System.out.println(bytes);
System.out.println(bytes.length);//汉字对应三个字节,英文字母对应一个字节
System.out.println(Arrays.toString(bytes));
需要注意的是,如果使用System.out.println(bytes);
这条语句输出的是字符数组的首地址。可以用System.out.println(Arrays.toString(bytes));
来输出对应的字符。
(4)byte[]->String
这里使用的是String类的构造方法来进行的转换。String str2=new String(bytes);
也可以使用String str3=new String(bytes,4,3);
指的是从索引为4
的开始找,找的字节长度为3
.
整体的代码+结果
public static void main(String[] args) {
//创建字符串对象
String str=new String("大锅盖ZZH");
//操作字符串对象
//1.最基本的操作
System.out.println(str.length());
System.out.println(str.isEmpty());
//2.根据索引确定子串
System.out.println(str.startsWith("zzh"));
System.out.println(str.endsWith("zzh"));
System.out.println(str.toUpperCase(Locale.ROOT));
System.out.println(str.toLowerCase(Locale.ROOT));
//str是不可变序列字符串
str=str.toLowerCase(Locale.ROOT);
System.out.println(str);
System.out.println("ZZH");
//根据索引确定子串
//charAt只能找到一个字符;所以放回值是一个char类型
char ch=str.charAt(2);
System.out.println(ch);
//subString方法可以找到多个连续的字符
String substr=str.substring(1,3);
System.out.println(substr);
//自动到最后一个字符结束
substr=str.substring(3);
System.out.println(substr);
//根据子串确定索引
str="周志浩zzhzzh";
System.out.println(str.indexOf("zzh"));
//从后往前找子串
System.out.println(str.lastIndexOf("zzh",3));//-1表示子串不存在
//返回值是int类型
int index=str.indexOf("zzh",8); //指定从那个索引开始找子串
System.out.println(index);
//3.其他方法
str=str.replaceAll("zzh","ZZH");
System.out.println(str);
str=" 周 志 浩 ";
System.out.println(str.length());
str=str.trim();
//只能去除两边的空格,字符中间的空格去不掉。
System.out.println(str.length());
//String->byte[]字节数组
byte[] bytes=str.getBytes();
System.out.println(bytes);
System.out.println(bytes.length);//汉字对应三个字节,英文字母对应一个字节
System.out.println(Arrays.toString(bytes));
//byte[]->String
String str2=new String(bytes);
//从4开始,一共3个字节。
String str3=new String(bytes,4,3);
System.out.println(str2);
System.out.println(str3);
}