Java String類的常用方法

一、compareTo

compareTo()方法用于按字典順序比較兩個字符串。該比較基于字符串中各個字符的 Unicode 值。按字典順序?qū)⒋?String 對象表示的字符序列與參數(shù)字符串所表示的字符序列進行比較。

如果按字典順序此 String 對象位于參數(shù)字符串之前,則比較結(jié)果為一個負整數(shù)。如果按字典順序此 String 對象位于參數(shù)字符串之后,則比較結(jié)果為一個正整數(shù)。如果這兩個字符串相等,則結(jié)果為 0。
compareTo 只在方法 equals(Object) 返回 true 時才返回 0

比較邏輯:

  • 首先取出兩個字符串的長度,比較較小的長度內(nèi),兩者是否相等。
  • 若不相等,則直接返回該位置字符的ASCII碼相減后的值。
  • 若各位置都相等,則將兩個字符串長度的差值返回。
public class Test {
    public static void main(String[] args) {
        String str1 = "cat";
        String str2 = "Cow";
        String str3 = "";
        System.out.println(str1.compareTo("cat"));  //0
        System.out.println(str1.compareTo(str2));  //32
        System.out.println(str1.compareTo(str3));  //3
    }
}

注意:
1、將字符串與空字符串進行比較,則該方法將返回非空字符串的長度(第三行輸出)。
2、compareTo()方法區(qū)分大小寫(第二行輸出結(jié)果為'c'與'C'的差值)。不區(qū)分大小寫的比較方法為compareToIgnoreCase方法。

二、concat

concat()方法可以連接多個字符串。此方法將指定的字符串添加到給定字符串的末尾,并返回組合后的字符串。

public class Test {
    public static void main(String[] args) {
        String str1 = "This";
        str1 = str1.concat(" is").concat(" just a").concat(" String");
        String str2 = "world";
        str2 = "hello,".concat(str2);
        System.out.println(str1);  //This is just a String
        System.out.println(str2); //hello,world
    }
}

三、equals

1、equals()與equalsIgnoreCase() 的區(qū)別

equals:區(qū)分大小寫
equalsIgnoreCase():不區(qū)分大小寫

public class Test {
    public static void main(String[] args) {
        String str1 = "world";
        System.out.println(str1.equals("World")); //false
        System.out.println(str1.equalsIgnoreCase("World")); //true
    }
}

2、equals()和contentEquals()的區(qū)別

equals()不僅比較這個字符串的內(nèi)容還檢查另一個被比較的對象是否是String類型;contentEquals()只比較兩者的內(nèi)容是否相同,不檢查被比較對象的類型。

String s = "hello world";
StringBuilder sb = new StringBuilder("hello world");

System.out.println(s.equals(sb)); //false
System.out.println(s.contentEquals(sb)); //true

比較String類型與String,StringBuilder, StringBuffer, CharBuffer等類型內(nèi)容的相等性使用contentEquals()。

四、join

經(jīng)常需要將一個數(shù)組或者List的各項通過分隔符連接成字符串。String.Join方法可以實現(xiàn)這一功能。

public class Test {
    public static void main(String[] args) {
        String[] str = new String[] { "a", "b", "c" };
        String myStr = String.join(",", str);
        System.out.println(myStr); //a,b,c
    }
}

五、split

split方法用于根據(jù)給定的分隔符將字符串拆分為其子字符串數(shù)組。

  • String[] split(String regex):根據(jù)分隔符拆分輸入字符串后返回一個字符串數(shù)組。
  • String[] split(String regex, int limit):此方法與上述方法的區(qū)別是它限制了拆分后返回的字符串數(shù)。例如split("anydelimiter", 3),即使字符串中的分隔符超過3次,也會返回僅3個字符串的數(shù)組。
  • 如果limit為負,則返回的數(shù)組將具有盡可能多的子字符串,但是當limit為零時,將返回去掉尾部空字符串的字符串數(shù)組。
public class Test {
    public static void main(String[] args) {
        String s = new String("bbaaccaa");
        String arr1[]= s.split("a", -1);
        System.out.println(arr1.length); //5
        String arr2[]= s.split("a", 0);
        System.out.println(arr2.length); //3,去掉了尾部的兩個空字符串
    }

使用split()方法時傳遞多個分隔符

public class Test{
   public static void main(String args[]){
    String s = " ,ab;gh,bc;pq#kk$bb";
    String[] str = s.split("[,;#$]");
    System.out.println(str.length); //7 
    for (int i=0; i < str.length; i++) {
        System.out.print("Str["+i+"]:"+str[i]+",");
    }
    //輸出結(jié)果:Str[0]: ,Str[1]:ab,Str[2]:gh,Str[3]:bc,Str[4]:pq,Str[5]:kk,Str[6]:bb,
   }
}

六、trim

trim():從輸入字符串中刪除前導和尾隨空格后返回一個字符串。

public class Test{
   public static void main(String args[]){
       String str = new String("    How are you   ");
       System.out.println("String before trim: "+str+"?");
       System.out.println("String after trim: "+str.trim()+"?");
   }
}

輸出結(jié)果:

String before trim:     How are you   ?
String after trim: How are you?

七、isEmpty

檢查字符串是否為空。如果給定的字符串為空,則此方法返回true,否則返回false。也就是說當字符串長度為0時返回true。

public class Test{  
   public static void main(String args[]){  
    String str1="";  
    String str2="hello";  

    System.out.println(str1.isEmpty());  //true
    System.out.println(str2.isEmpty());  //false
   }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容