String类是字符串常量类,该类的对象创建后不能修改。要知道:其实String底层就是char数组。而相对而言的StringBuffer/StringBuilder表示的是一个内容可变的字符序列。
一:字符串长度
String类的length()方法可以确定字符串的长度即字符的个数
public class TestString { public static void main(String[] args) { String str = "abcdefgh"; int length = str.length(); System.out.println("长度为:"+length); }} |
结果:
长度为:8 |
二:字符串的比较
1:equals(Object object)返回的是boolean类型,它将逐个比较组成字符串的每个字符是否相等,在这个方法中,大小写不一致,也不相等
2:String toLowerCase():将该字符串转换成小写,并返回转换后的字串,这时可以用equals方法比较两个字符串
3:String toUpperCase():将该字符串转换成大写,便返回转换后的字串,这时可以用equals方法比较两个字符串
4:equalsIgnoreCase(Object object)返回的是boolean类型,它也将逐个比较组成字符串的每个字符是否相等,在这个方法中忽略大小写,大小写不一致,也依然相等
5:compareTo(String anotherString)根据组成两个相互比较字符串的字符的Unicode排序,如果比较的过程中没有发现不同则返回0;如果发现了不同的地方,那么若当前字符串的Unicode大于参数中的Unicode值,则返回一个大于0的数,否则返回一个小于0的数。
public class TestString { public static void main(String[] args) { String str1 = "abcdefgh"; String str2 = "AbcDEFgh"; boolean b1 = str1.equals(str2); System.out.println("equals直接进行比较结果:"+b1); String str3 = str1.toLowerCase(); String str4 = str1.toLowerCase(); boolean b3 = str3.equals(str4); System.out.println("转换小写之后的equals直接进行比较结果:"+b3); boolean b2 = str1.equalsIgnoreCase(str2); System.out.println("忽略大小写的比较结果:"+b2); int b4 = str1.compareTo(str2); System.out.println("compare比较结果,返回unicode差值:"+b4); }} |
结果:
equals直接进行比较结果:false转换小写之后的equals直接进行比较结果:true忽略大小写的比较结果:truecompare比较结果,返回unicode差值:32 |
三:字符串的连接
1:连接字符串可以使用+号连接任意多的字符串,其他数据类型和String相连,会先转化成String,然后进行字符串的连接
2:concat()将一个字符串连接在另一个字符串之后
public class TestString { public static void main(String[] args) { String str1 = "welcome"; String str2 = " to"; String str3 = " Haerbin"; String str = str1+str2+str3; System.out.println("+连接后的字符串:"+str); String s = str1.concat(str2).concat(str3); System.out.println("concat连接之后的字符串:"+s); }} |
结果:
+连接后的字符串:welcome to Haerbinconcat连接之后的字符串:welcome to Haerbin |
四:字符串查找与截取
1:public int indexOf(String ch):返回字符串中第一次出现参数的位置,字符串的位置从0开始
String str1 = "abchbcyreabccvb"; int index = str1.indexOf("bc"); System.out.println("位置为:"+index);//结果:1 |
2:public int indexOf(String ch,int fromIndex):从fromIndex开始,向后查找,返回字符串中第一次出现参数的位置
String str1 = "abchbcyreabccvb"; int index = str1.indexOf("bc",5); System.out.println("位置为:"+index);//结果:10 |
3:public int lastIndexOf(String ch):返回字符串中最后一次出现参数的位置
String str1 = "abchbcyreabccvb"; int index = str1.lastIndexOf("bc"); System.out.println("位置为:"+index);//结果:10 |
4:public int lastIndexOf(String ch,int fromIndex):从fromIndex开始,向前查找,返回字符串最后一次出现参数的位置
String str1 = "abchbcyreabccvb"; int index = str1.lastIndexOf("bc",5); System.out.println("位置为:"+index);//结果:4 |
5:public String subString(int beginIndex):从beginIndex开始包括beginindex位置以后的子字符串
String str1 = "abchbcyreabccvb"; String str= str1.substring(6); System.out.println("字串为:"+str);//结果:yreabccvb |
6:public String subString(int beginindex,int endindex):从beginindex开始到endindex-1为止的字符串(包括beginindex和endindex-1两个位置上的字符)
String str1 = "abchbcyreabccvb"; String str= str1.substring(2,8); System.out.println("字串为:"+str);//结果:chbcyr |
7:public boolean startsWith(String str):返回boolean类型,判断字符串是不是以str开头
String str1 = "abchbcyreabccvb"; boolean bool = str1.startsWith("Abc"); System.out.println("以Abc开头吗?"+bool);//结果:false |
8:public boolean endsWith(String str):返回boolean类型,判断字符串是不是以str结尾
String str1 = "abchbcyreabccvb"; boolean bool = str1.endsWith("cvb"); System.out.println("以cvb结尾吗?"+bool);//结果:true |
9:public boolean startsWith(String ch,int beginindex):从begin开始的子字符串(包括begin位置的字符)是不是以ch开头
String str1 = "abchbcyreabccvb"; boolean bool = str1.startsWith("bc",4); System.out.println("以bc开头吗?"+bool);//结果:true |
10:public String trim():去掉字符串的前导后导空格,字符串中间的空格去不掉
String str1 = " welcome to Haerbin "; String str = str1.trim(); System.out.println("trim后的结果:"+str);//结果:welcome to Haerbin |
五:StringBuffer/StringBuilder字符串
这两个和String的区别在于:这两个创建的对象的内容,大小可变。
这两个之间的区别在于:StringBuffer是线程安全的,而StringBuilder是非线程安全的,但他的优势在于,由于少了许多同步操作,所以效率更高。
基本方法:
append(String str):实现字符串的大量拼接,效率高
length():返回字符串的长度
toString():返回对应的String类型的数据
public class TestString { public static void main(String[] args) { StringBuffer str1 = new StringBuffer("abc"); StringBuffer str2 = new StringBuffer("123"); String str = str1.append(str2).toString();//先拼接后转换 System.out.println("拼接后的字符串为:"+str); }} |
结果:
拼接后的字符串为:abc123 |
Java中类似于这样的知识点还有很多,他们很零碎,且规则还略有偏差,我们在应用的时候要注意细小的差别,以防止出错。