Java 中的 equals() 與 ==


在 Java 中,判斷兩個物件是否相等有兩種方法:equals() 方法和 == 運算子。equals() 方法比較兩個物件的內容。== 運算子比較兩個物件的引用。

使用 new 運算子建立物件時,它會在堆中分配一個指定的記憶體位置。例如,兩個物件具有相同的資料。即使這兩個物件儲存在記憶體的不同部分,equals() 方法也會返回 true。

如果兩個物件儲存在記憶體的完全相同的位置,則 == 運算子返回 true。

.equals() 和 == 的區別

方面

.equals() 方法

== 運算子

定義

.equals() 方法是 java.lang.Object 類的一部分。

== 運算子是 Java 中的比較運算子。它適用於基本資料型別和物件。

比較重點

.equals() 用於比較物件的內容。例如,比較兩個字串的字元或兩個整數的數值。

== 運算子檢查兩個物件是否引用相同的記憶體位置,從而確定它們是否為同一個物件。

行為定製

可以在領域物件中為 .equals() 方法定義自定義行為。例如,可以設定自定義條件來判斷兩個 Employee 物件是否相等。

== 運算子的行為不能改變。

條件更改

.equals() 方法可以被重寫以指定物件相等性的條件。

== 運算子的行為保持靜態且不可更改。

.equals() 方法

Java 中的 String equals() 函式根據字串的資料/內容評估兩個字串。如果兩個字串的所有內容都匹配,則返回 true;如果不匹配,則返回 false。

.equals()

程式碼建立執行緒和字串物件,然後使用 == 比較它們的引用,所有比較都返回 false。它使用 .equals() 比較字串內容,對於內容匹配的字串返回 true。

演算法

  • 步驟 1:生成一個名為“t1”的新執行緒例項。

  • 步驟 2:建立另一個名為“t2”的新執行緒例項。

  • 步驟 3:將“t2”的引用賦值給“t3”執行緒引用。

  • 步驟 4:建立兩個新的 String 例項:“s1”和“s2”,內容為“Tutorials”。

  • 步驟 5:使用“==”運算子檢視“t1”和“t2”是否具有相同的引用。列印此比較的結果 (false)。

  • 步驟 6:再次使用“==”運算子比較“t1”與“t2”是否具有相同的引用。列印此比較的結果 (false)。

  • 步驟 7:使用“==”運算子檢查引用“s1”和“s2”是否相同。列印此比較的結果 (false)。

  • 步驟 8:使用“equals”方法比較“t1”是否等於自身。列印此比較的結果 (true)。

  • 步驟 9:使用“equals”方法比較“s1”的內容是否等於“s2”的內容。列印此比較的結果 (true)。

  • 步驟 10:程式結束。

示例

public class Tutorialspoint {
	public static void main(String[] args)
	{
		Thread t1 = new Thread();
		Thread t2 = new Thread();
		Thread t3 = t2;

		String s1 = new String("Tutorials");
		String s2 = new String("Tutorials");

		System.out.println(t1 == t2);
		System.out.println(t1 == t2);
		System.out.println(s1 == s2);

		System.out.println(t1.equals(t1));
		System.out.println(s1.equals(s2));
	}
}

輸出

false
false
false
true
true

== 運算子

所有基本型別,例如布林型別,都受相等運算子的約束。對於物件型別,相等運算子也適用。

以下程式碼的輸出表明,不同整數、字元和浮點值的比較返回 false。但是相同布林值的比較返回 true。

演算法

  • 步驟 1:使用“==”運算子比較整數 30 是否等於整數 40。列印此比較的結果 (false)。

  • 步驟 2:檢視字元 'x' 是否等於字元 'y'。為此,我們使用“==”運算子。列印此比較的結果 (false)。

  • 步驟 3:使用“==”運算子比較字元 'x' 是否等於浮點值 35.0。列印此比較的結果 (false)。

  • 步驟 4:使用“==”運算子比較布林值 true 是否等於布林值 true。列印此比較的結果 (true)。

  • 步驟 5:程式結束。

示例

public class Test {
	public static void main(String[] args)
	{
		
		System.out.println(30 == 40);

	
		System.out.println('x' == 'y');

	
		System.out.println('x' == 35.0);

	
		System.out.println(true == true);
	}
}

輸出

false
false
false
true

結論

.equals() 方法比較兩個物件的內容。另一方面,== 運算子比較物件的記憶體地址。我們查看了每種方法的示例,以瞭解其區別。

更新於:2023年8月29日

517 次瀏覽

啟動您的 職業生涯

完成課程獲得認證

開始學習
廣告