=="和Equals的區別

“==”對於基本數據類型,判斷兩個變量的值是否相等,“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用於比較兩個對象的值是否相同【不是比地址】

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章