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中类似于这样的知识点还有很多,他们很零碎,且规则还略有偏差,我们在应用的时候要注意细小的差别,以防止出错。