使用equals和==進行比較的區別
這道題想考察什么 ?
在開發中當需要對引用類型和基本數據類型比較時應該怎么做,為什么有區別。
考察的知識點
equals 的實現以及棧和堆的內存管理
考生應該如何回答
在 Java 中,equals()
方法和 ==
運算符用于比較對象之間的相等性,但它們之間有著不同的行為:
== 運算符:
- 在比較基本數據類型(也稱原始數據類型:byte,short,char,int,long,float,double,boolean)時,
==
比較的是它們的值是否相等。 - 在比較引用數據類型時,
==
比較的是兩個對象引用是否指向內存中的同一個對象。
對于引用類型,除非是同一個new
出來的對象,他們的比較的結果為true
,否則為false
。
因為每new
-次,都會重新開辟堆內存空間
,哪怕他們的值一致,但是也是在不同的地址
存放。
所以對于引用類型的值比較應該使用equals方法。