=以及==和equals的比較

2-1_ 對於“=”,即將右邊的值賦給左邊變量,右邊不論是什麼,只要能生成一個值就行。對於常量的賦值,例如a=b,只是將右邊的內容複製給左邊,即使再修改a的內容,b(右值不受影響);對於對象的賦值,例如c=d,我們實際是將一個對象的引用(d)賦給另一個對象的引用(c),那麼c和d都指向原來d的對象(內存空間)。
2-2_
一、java當中的數據類型和“==”的含義:
基本數據類型(也稱原始數據類型) ,他們之間的比較,應用雙等號(==),比較的是他們的值。
複合數據類型(類):當他們用(==)進行比較的時候,對象實體的內存地址,即堆內存的地址。
二、equals()方法介紹:
JAVA當中所有的類都是繼承於Object這個超類的,在Object類中定義了一個equals的方法,這個方法的初始行爲是比較對象的內存地址,但在一些類庫當中這個方法被複寫了,如String等,在這些類當中equals有其自身的實現,而不再是比較類在堆內存中的存放地址了。
所以說,對於複合數據類型之間進行equals比較,在沒有覆寫equals方法的情況下,他們之間的比較還是內存中的存放位置的地址值,跟雙等號(==)的結果相同;如果被複寫,按照複寫的要求來。
三、String中的equals()和==比較:
equals()比較的是字符串的內容是否相等,==比較的是字符串實體的內存地址是否相等。
String ff=”bb”;
String hh = “bb”;
System.out.println(ff==hh);//結果爲true,並沒有開闢新的內存空間,引用的指向是一樣的。
String gg = new String(“bb”);
System.out.println(ff==gg);//結果爲false,內存地址不一樣了。
System.out.println(ff.equals(gg));//結果爲true,內容一致

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