java中 和 equal區別

2021-06-01 22:30:50 字數 1117 閱讀 3963

明確概念:

物件的引用:當用類建立乙個物件時,類中的成員變數被分配記憶體空間,這些記憶體空間稱為該物件的實體,而物件中存放著引用(位址),以確保該實體由該物件操作使用。

一、比較物件為基本資料型別(byte,short,char,int,long,float,double,boolean)

比較兩個基本資料型別是否相等用==,因為只有類才會有equals方法。

備註:string不是基本資料型別

二、比較物件為引用資料型別

euqals和==本質上都是比較

比較的是兩個物件的引用(記憶體位址)是否相同

。equals()是object類的方法 ,object類是所有類的基類,所以每個類都會繼承equals()方法。 但在

string,integer,date在這些類當中重寫了equals方法,而不再是比較物件在堆記憶體中的存放位址了,而是比較它們指向的實體(內容)是否相同。

example:

person p1=new person();//使用new 關鍵字建立乙個物件會為此物件分配記憶體空間。

person p2=null; //此物件還沒有記憶體空間

p2=p1;//此時p1和p2指向的是同乙個記憶體空間 或說是指向同乙個實體(內容)

string s1 = "nihao";

string s2 = "nihao";

記憶體示意圖

s1==s2 //返回true,指向同乙個記憶體空間,s1和s2為同乙個物件

s1.equals(s2)//返回true

string s3=new string("nihao");

string s4=new string("nihao");

記憶體示意圖:

s3==s4//返回false,s3和s4分別指向不同的記憶體空間

s3.equals(s4)//返回true,它比較的是兩個字串的內容

所以 對於引用型別之間進行equals比較,在沒有覆寫equals方法的情況下,還是比較它們在記憶體中的存放位址是否相同,因為object的equals方法也是用雙等號(==)進行比較的,所以比較後的結果跟雙等號(==)的結果相同。

以上為個人總結,若有錯誤之處,請大家批評指正。

java 與equal 的區別

判定的是物件的等價性,必須是實實在在地是同乙個物件才返回true。判定基本型的值是否相等。int i1 47 int i2 47 system.out.println i1 i2 output true 基本型包裝類 integer n1 new integer 47 integer n2 new ...

java中 與 equal 的區別

看一段 string str1 new string str string str2 new string str system.out.println 比較 str1 str2 system.out.println equal比較 str1.equals str2 結果 比較 false equa...

Java中 和 的區別

第十一,short s1 1 s1 s1 1 有什麼錯?short s1 1 s1 1 有什麼錯?引出一下討論。賦值運算子,在編譯器將右邊的表示式結果計算出來後,和左邊的變數型別比較精度,如果左邊的變數精度低於右邊的結果的精度,編譯器會顯式的報錯,告訴程式設計師去強制轉型。所以s1 s1 1出錯 最...