java==和=_java中==和 equal区别
明確概念:
對象的引用:當用類創建一個對象時,類中的成員變量被分配內存空間,這些內存空間稱為該對象的實體,而對象中存放著引用(地址),以確保該實體由該對象操作使用。
一、????比較對象為基本數據類型(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==和=_java中==和 equal区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用python实现链表_用Python实
- 下一篇: java date oracle_jav