在 Java 中比較字串
幾乎所有的 Java 開發人員都會在某些時候需要比較兩個字串來完成一個應用程式的邏輯。字串變數是一個字元的集合。要了解對字串的比較操作,我們首先需要了解字串的屬性。
- 字串是不可變的。這意味著它們不能增長,對字串的任何改變都會導致一個新的字串形成。這是因為它們內部是由字元陣列支援的,是不可變的。
- 每當我們說要建立一個字串時,就會建立兩個放在不同記憶體區域的物件。一個是在堆區建立,而第二個是在 String 常量池中建立。字串引用將機器指向堆區物件。
比如說
String mystring = "World"
在本例中,mystring
指向存放字串 World
的堆區。
下面是 java 中用來比較字串的四種方法,本文將詳細解釋。
compareTo()
方法。- 相等
==
運算子 equals()
方法contentEquals()
方法;
使用 compareTo()
方法比較 Java 中的字串
它對兩個字串進行詞法上的比較。它的工作原理是首先給字串中的每個字元分配一個 Unicode 值,然後比較這兩個字串。這個過程將結果返回為零、正數或負數。
- 當兩個比較的字串在詞法上相等時,結果為零。
- 如果第一個字串比第二個字串大,結果為正數。
- 當第二個字串大於第一個字串時,結果為負。
compareTo()
方法有兩種使用方法。
比較兩個字串文字
讓我們比較一下 string1 和 string2。我們比較這兩個字串的結果是一個 int
型別。例子:
public class CompareToCode {
public static void main(String args[]) {
String string1 = "now";
String string2 = "now";
int result = string1.compareTo(string2);
System.out.println(result);
}
}
輸出:
0
比較字串和物件
compareTo()
方法也允許用字串比較未引用的物件。例子:
public class CompareTo {
public static void main(String args[]) {
String string1 = "now";
int result = string1.compareTo("now");
System.out.println(result);
}
}
輸出:
0
compareTo()
區分大小寫
compareTo()
方法是區分大小寫的。這意味著,即使兩個字串相同,如果它們不一致,它也會顯示為不同。例如:
public class CompareTo {
public static void main(String args[]) {
String string1 = "hello";
String string2 = "HELLO";
int result = string1.compareTo(string2);
System.out.println(result);
}
}
輸出:
-32
世界上的 hello
和 HELLO
與上面的處理方式不同,因此我們得到的結果是-32。
然而,這個字串類中的另一個方法忽略了大小寫敏感度 - compareToIgnoreCase()
。例如:
public class CompareToIgnoreCase {
public static void main(String args[]) {
String string1 = "hello";
String string2 = "HELLO";
int result = string1.compareToIgnoreCase(string2);
System.out.println(result);
}
}
輸出:
0
相等 ==
操作符方法
它是一個 java 字串比較方法,比較兩個物件是否在同一個記憶體位置。例子
public class EqualityOperator {
public static void main(String args[]) {
String oneS = new String("Wow");
String twoS = new String("Wow");
System.out.println(oneS == twoS);
}
}
輸出:
false
==
運算子比較 oneS 和 twoS 物件,檢查它們是否相同。oneS
和 twoS
這兩個 Strings 都是不同的引用,因此返回 false
.oneS
和 twoS
是兩個不同的物件。然而,它們都有相同的值在其中。
equals()
方法
這是在 Java 中用來比較兩個字串的值的方法。該方法的輸出是 true 或 false。如果被比較的字串的值不相等,那麼該方法返回 false。如果被比較的字串是相等的,那麼該方法返回 true。例如
public class Equals {
public static void main(String args[]) {
String oneS = new String("Wow");
String twoS = new String("Wow");
System.out.println(oneS.equals(twoS));
}
}
輸出:
true
equals()
方法區分大小寫
equals()
方法是區分大小寫的,因此將相同的詞蓋不同的詞看成不同的詞。例如
public class Equals {
public static void main(String args[]) {
String oneS = new String("Wow");
String twoS = new String("WOW");
System.out.println(oneS.equals(twoS));
}
}
輸出:
false
在上面的例子中,使用 equals()
方法將 wow
和 WOW
進行比較,返回 false。
但是,如果你想使用 equals()
方法而不考慮大小寫敏感性,你可以使用 equalsToIgnoreCase()
方法。對於上面的例子,equalsIgnoreCase()
將返回 true。
public class EqualsIgnorecase {
public static void main(String args[]) {
String oneS = new String("Wow");
String twoS = new String("WOW");
System.out.println(oneS.equalsIgnoreCase(twoS));
}
}
輸出:
true
contentEquals()
方法
這也是一個 java 字串比較方法,它將字串緩衝區和字串進行比較,並返回 false 或 true。如果字串與被比較的字串緩衝區相匹配,則該方法返回 true。如果字串與被比較的字串緩衝區不匹配,則該方法返回 false。如果字串與被比較的字串緩衝區不匹配,則該方法返回 false。
例子:
public class ContentEquals {
public static void main(String args[]) {
String firstS = new String("Here we are");
StringBuffer secondS = new StringBuffer("Here we are");
System.out.println(firstS.contentEquals(secondS));
}
}
輸出:
true