“==”對於基本數據類型,判斷兩個變量的值是否相等,“equal”不能用於基本數據類型。只能用於類變量。對於基本數據類型要用其包裝類。
對於對象變量,"=="和"equal"的區別
首先說一下變量和對象的卻別:
變量只是分配了棧內存,並沒有分配內存空間,而對象是已經在內存中佔用了空間的。
變量用“==”比較時,因爲沒用內存空間,只比較內存,所以爲true;”而對象存儲的是對象在內存中的路徑,即內存地址,所以用“==”比較時,即使對象的值相等,但是他們的內存地址不同,所以==的結果爲false。故“==”用於比較兩個變量的值是否相等,而不是變量引用的對象是否相等
@Test
public void test(){
String s1="hello";
//不創建新的String常量,使用常量池中已有的字符串“hello”
String s2="hello";
System.out.println(s1==s2);
//使用new關鍵字時會創建新的String對象“hello”
String s3=new String("hello");
//==和equal對比
System.out.println(s1==s3);
System.out.println(s1.equals(s3));
}
控制檯輸出結果
總結:
“==”比較的是值【變量(棧)內存中存放的對象的(堆)內存地址】
equal用於比較兩個對象的值是否相同【不是比地址】