String类是Java类库中提供的一个预定义类,用来操作字符串。因为最近面试总会问到,特在此归纳总结。
String是不可变的,因此用“+”进行字符串拼接的时候,实际上新建了一个字符串对象。String被修饰为final,所以是不可继承的。
以下是String常用的方法。
获取子串,substring(begin,end)
String s1 = "javajava"; String s = s1.substring(0,3); System.out.println(s);//得到s的值为jav.
将字符串转换为字符数组,toCharArray()。
String s1 = "javajava"; char[] s = s1.toCharArray(); for(int i = 0;i < s.length;i++) { System.out.print(s[i]); }
通过字符数组创建字符串。
char[] cs = new char[]{'c','+','+'}; String s = new String(cs); System.out.print(s);//输出c++
获取字符,CharAt(index)
String s1 = "javajava"; char c = s1.charAt(2); System.out.println(c);//得到c的值为v
根据特定字符分割字符串,split(s),作为分隔符的字符不在结果中。
String s = "java,python"; String[] subs1 = s.split(","); for(String sub : subs1) { System.out.println(sub); }
去掉收尾空格,trim()
String s = " java,python "; String s1 = s.trim(); System.out.println(s);//有空格 System.out.println(s1);//无空格
所有字母改为小写字母,toLowerCase()。所有字母改为大写字母,toUpperCase()。
返回字符串或字符首次出现的位置,indexOf(s),返回字符串或字符最后出现的位置,lastindexOf(),从位置Index开始,字符或字符串出现的位置,indexOf(s,index).
String s = "java,C++,Go,Python"; System.out.println(s.indexOf(','));//4 System.out.println(s.indexOf("Go"));//9 System.out.println(s.indexOf(",",5));//8 System.out.println(s.lastIndexOf(","));//11
替换字符串,replace()和replaceAll()都可以替换所有的,replaceFirst()替换第一次出现的。
String s = "java,C++,java,Python"; String s2 = s.replace("java", "Go"); System.out.println(s2);//Go,C++,Go,Python String s3 = s.replaceAll("java", "Go"); System.out.println(s3);//Go,C++,Go,Python String s4 = s.replaceFirst("java", "Go"); System.out.println(s4);//Go,C++,java,Python
比较两个字符串是否相等的方式是equals,忽略大小写为equalsIgnoreCase,==比较的是两个字符串是否放在同一个位置上。前文已经说过,String是不可变的,不可变的优点之一就是字符串共享,假设已经有一个字符串为s1="java",这时建立一个字符串s3 = "java",判别s1 == s3的结果就是true,因为编译器发现已经有了一个“java”,就不会再新建,而是直接拿来使用。
String s1 = "java"; String s2 = new String(s1); String s3 = "java"; System.out.println(s1.equals(s2));//true System.out.println(s1 == s2);//false System.out.println(s1 == s3);//true
是否以子字符串开始或者结束,startsWith(),endsWith()
String s1 = "java"; System.out.println(s1.startsWith("ja"));//true System.out.println(s1.endsWith("va"));//true