在 論壇裡看見有這樣乙個問題
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...