Java字符串比较(3种办法
? ? ? 字符串比較是常見的操作,包括比較相等、比較大小、比較前綴和后綴串等。在?Java?中,比較字符串的常用方法有 3 個:equals() 方法、equalsIgnoreCase() 方法、 compareTo() 方法。下面詳細介紹這 3 個方法的使用。
1.equals() 方法
? ? ?equals() 方法將逐個地比較兩個字符串的每個字符是否相同。如果兩個字符串具有相同的字符和長度,它返回 true,否則返回 false。對于字符的大小寫,也在檢查的范圍之內。equals() 方法的語法格式如下:
str1.equals(str2);? ? ?str1 和 str2 可以是字符串變量, 也可以是字符串字面量。 例如, 下列表達式是合法的:?
"Hello".equals(greeting);下面的代碼說明了 equals() 方法的使用:
String str1 = "abc"; String str2 = "abc"; String str3 = "ABC"; System.out.println(str1.equals(str2)); // 輸出 true System.out.println(str1.equals(str3)); // 輸出 false?2.equalsIgnoreCase() 方法
? ? ? ?equalsIgnoreCase() 方法的作用和語法與 equals() 方法完全相同,唯一不同的是?equalsIgnoreCase() 比較時不區分大小寫。當比較兩個字符串時,它會認為 A-Z 和 a-z 是一樣的。
? ? ? 下面的代碼說明了 equalsIgnoreCase() 的使用:
String str1 = "abc"; String str2 = "ABC"; System.out.println(str1.equalsIgnoreCase(str2)); // 輸出 true3.compareTo() 方法
? ? ? ?通常,僅僅知道兩個字符串是否相同是不夠的。對于排序應用來說,必須知道一個字符串是大于、等于還是小于另一個。一個字符串小于另一個指的是它在字典中先出現。而一個字符串大于另一個指的是它在字典中后出現。字符串(String)的 compareTo() 方法實現了這種功能。
? ? ? ?compareTo() 方法用于按字典順序比較兩個字符串的大小,該比較是基于字符串各個字符的 Unicode 值。compareTo() 方法的語法格式如下:
? ? ? ?它會按字典順序將 str 表示的字符序列與 otherstr 參數表示的字符序列進行比較。如果按字典順序 str 位于 otherster 參數之前,比較結果為一個負整數;如果 str 位于 otherstr 之后,比較結果為一個正整數;如果兩個字符串相等,則結果為 0。
? ? ? ?提示:如果兩個字符串調用 equals() 方法返回 true,那么調用 compareTo() 方法會返回 0。
? ? ? ?編寫一個簡單的 Java 程序,演示 compareTo() 方法比較字符串的用法,以及返回值的區別。代碼如下:
public static void main(String[] args) {String str = "A";String str1 = "a";System.out.println("str.compareTo(str1)的結果是:" + str.compareTo(str1));System.out.println("str1.compareTo(str)的結果是:" + str1.compareTo(str));System.out.println("str1.compareTo('a')的結果是:" + str1.compareTo("a")); }4.補充:equals()與==的比較
? ? ? 理解 equals() 方法和==運算符執行的是兩個不同的操作是重要的。如同剛才解釋的那樣,equals() 方法比較字符串對象中的字符。而==運算符比較兩個對象引用看它們是否引用相同的實例。
? ? ? ?下面的程序說明了兩個不同的字符串(String)對象是如何能夠包含相同字符的,但同時這些對象引用是不相等的:
String s1 = "Hello"; String s2 = new String(s1); System.out.println(s1.equals(s2)); // 輸出true System.out.println(s1 == s2); // 輸出false? ? ? ?變量 s1 指向由“Hello”創建的字符串實例。s2 所指的的對象是以 s1 作為初始化而創建的。因此這兩個字符串對象的內容是一樣的。但它們是不同的對象,這就意味著 s1 和 s2 沒有指向同一的對象,因此它們是不==的。
? ? ? ?因此,千萬不要使用==運算符測試字符串的相等性,以免在程序中出現糟糕的 bug。從表面上看,這種 bug 很像隨機產生的間歇性錯誤。
? ? ? ?當然,每一種語言都會存在一些不太一致的地方。C 程序員從不使用==對字符串進行比較,而使用 strcmp 函數。Java 的 compareTo 方法與 strcmp 完全類似。
希望uu們看完能有所收獲呀,也希望能留下寶貴的3連o!!!
總結
以上是生活随笔為你收集整理的Java字符串比较(3种办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Saminside+Ophcrack
- 下一篇: 【有利可图网】绿色好心情!绿色系配色方案