equals("")和“==”的區別

 引用自:http://www.cnblogs.com/wennxxin/archive/2008/10/08/1306392.html

 

凡是比較基本類型只能用==,比較結果你看到的字面值相等就會相等,什麼叫基本類型? byte,short,int,long,char,float,double這幾種就是基本類型.基本類型不是對象所以不存在用equals比較.
凡是比較引用類型(對象),==比較的是兩個引用是不是指向同一個內存地址,equals比較的是兩個引用的字面值是不是相同,什麼叫字面值?你能看到的值就是字面值,比如:String s="abc"; abc就是字面值.
基本類型的包裝類型是對象類型,所以除非兩個相同字面值的引用指向同一內存地址,值纔會相等,比如:
Integer a=new Integer(3);Integer b=a;//互相賦值
這樣用等號或equals比較都會得出true,記住一點,凡是兩個引用都用了new去初始化,那==比較的結果都只會是false,互相之間有了賦值,比較結果就爲true.
比較不好理解的一點:
String a="abc";
String b="abc";
a==b和a.equals(b);結果都會爲true,因爲沒有用new去新建對象,其實a和b都指向的是同一個String對象"abc",改成:
String a=new String("abc");
String b=new String("abc");
後==的結果就是false了.

==是判斷兩個變量或實例是不是指向同一個內存空間
equals是判斷兩個變量或實例所指向的內存空間的值是不是相同
一個比的是屬性一個比的是值!!

==用於比較引用和比較基本數據類型時具有不同的功能:
比較基本數據類型,如果兩個值相同,則結果爲true.
而在比較引用時,如果引用指向內存中的同一對象,結果爲true .

equals 方法被用來檢測兩個對象是否相等,即兩個對象的內容是否相等。

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