”==”和”.equals()”的區別

"=="比較的是在內存中存放的地址。

".equals()"是對象之間的比較—比較兩個對象的內容是否相等。

爲了更好地理解,我們先了解一下"=="的含義:

•基本數據類型(也稱原始數據類型) :byte,short,char,int,long,float,double,boolean。
他們之間的比較,應用雙等號==
基本數據類型不能使用.equals() 方法。只能使用"==",因爲.equals()是對象與對象之間的比較。

•引用數據類型:除了基本數據類型,其他數據類型都是引用數據類型。
當他們用(==)進行比較的時候,比較的是他們在內存中的存放地址(確切的說,是堆內存地址)。

注:對於第二種類型,除非是同一個new出來的對象,他們的比較後的結果爲true,否則比較後結果爲false。因爲每new一次,都會重新開闢堆內存空間。

最後來兩個例子說明一下:
舉例1: String aa= “123”;
String bb= “123”;

	System.out.println(aa==bb);   //true								 ====
	System.out.println(aa.equals(bb));  //true

原因:他們的地址都在堆區中的方法區中,內存地址相同,值又相同,所以都返回true

舉例2: String a=new String(“foo”);
String b=new String(“foo”);

	System.out.println(aa==bb);//false        
	原因:new出來的對象在堆中的內存地址不同
	System.out.println(aa.equals(bb));//true
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章