在Java編程語言中,有兩種使用等號“=“的方法,就是物理相等和邏輯相等。兩者的含義和用法是有區別的,下面我們來深入了解一下。
在Java中,雙等號“==“用于判斷兩個變量是否相等,被稱為物理相等。它比較的是對象的地址,也就是說比較的是兩個對象是否是同一個對象。
String s1 = "hello world";
String s2 = "hello world";
String s3 = new String("hello world");
System.out.println(s1 == s2); // 輸出true
System.out.println(s1 == s3); // 輸出false
上面的代碼中,s1和s2是相等的,因為它們的值相同,同時Java采用“字符串常量池”的機制,即相同的字符串只會在內存中存儲一份。而s3是通過new關鍵字創建的新的字符串對象,因此與s1和s2不是同一個對象,物理相等返回false。
邏輯相等是使用equals方法進行判斷,比較的是兩個對象是否在邏輯上相等。一般情況下,邏輯相等和物理相等是一樣的,但是對于一些特殊的情況,比如字符串的不同編碼方式等,邏輯相等和物理相等可能會不同。
String s1 = "hello";
String s2 = "HELLO".toLowerCase();
System.out.println(s1.equals(s2)); // 輸出true
System.out.println(s1 == s2); // 輸出false
在上面的代碼中,s1和s2的值都是“hello”,但是s2是通過調用toLowerCase()方法將“HELLO”轉為小寫后得到的,因此它們在物理上不是同一個對象。但是由于調用了equals方法,比較的是邏輯相等,因此返回true。
總之,在Java中使用“==”符號進行比較時,比較的是兩個對象的物理相等;而使用equals方法進行比較時,則比較的是兩個對象的邏輯相等。
上一篇oracle exp函數
下一篇python白名單競賽