Java中 與equales的應用

2021-04-13 23:37:40 字數 880 閱讀 4185

在 論壇裡看見有這樣乙個問題

integer   i   =   new   integer   (42);

long   1   =   new   long   (42);

double   d   =   new   double   (42.0);

which   two   expressions   evaluate   to   true?   (choose   two)

a.   (i   ==1)

b.   (i   ==   d)

c.   (d   ==   1)

d.   (i.equals   (d))

e.   (d.equals   (i))

f.   (i.equals   (42))

在jdk1.5的版本下測試發現,b、c編譯錯誤,a、d、efalse,ftrue

原因:==  

是比較記憶體位址

而equals

有些例外。

objcet

的equals

是進行記憶體位址的比較。

而integer  

、long  

、double  

等等的一些包裝類是繼承了

obj的

equals

方法,進行了重構,

是對物件值的比較。包裝器的equals方法比較兩項內容:兩個包裝器的型別是否相同,兩個包裝器裡面基本型的數值是否相同。當且僅當這兩項內容都為真的時候equals方法才返回真

integer、long與double是不相相容的類,所以b、c編譯不能通過

呼叫i.equals(42)時會對基本型42進行自動裝箱,這句相當於i.equals(new   integer(42))

Java開發中應注意的事項!

1 關於if else for 如果我們的 中出現以下if else情況 if a equal str else else if b equal str else else if c equal str 連續出現4次以上的else if判斷巢狀時,三層以上for迴圈時,會大大降低 的閱讀性,維護性,...

java中對於介面與抽象類的區分及實際應用

區別 1.介面是抽象類的一種,是常量和方法的集合。常量 預設 public static final 資料型別 變數名 方法 預設 public static 資料型別 方法名 2.抽象類中既可以有抽象方法,也可以有預設實現的方法,並且可以用任何修飾符修飾。3.介面可以實現多繼承 應用 1.如果方法...

java中 與 的區別

既是邏輯運算子,又是位運算子,當 作為邏輯運算子時屬於非短路型,而 只是短路型邏輯運算子 和 都可以用作邏輯與的運算子,表示邏輯與 and 當運算子兩邊的表示式的結果都為true時,整個運算結果才為true,否則,只要有一方為false,則結果為false。還具有短路的功能,即如果第乙個表示式為fa...