在Java中,大寫Double可以爲null。測試與Doubles的相等性
但是,如果我有雙打a
和b
和我這樣做:
if (a.equals(b))
崩潰,如果他們中的一個爲空。有沒有更好的方法來比較它們?
在Java中,大寫Double可以爲null。測試與Doubles的相等性
但是,如果我有雙打a
和b
和我這樣做:
if (a.equals(b))
崩潰,如果他們中的一個爲空。有沒有更好的方法來比較它們?
在Java中7+最簡單的方法是:
Objects.equals(a, b)
如果您使用的是Java的早期版本,你可以使用條件運算符:
(a != null) ? a.equals(b) : (b == null)
爲了我自己的理解,大聲讀出最後一個語句:對於'a.equals(b)'工作,'a'不能爲null(因爲沒有'null.equals(b)'這樣的事情)。但是如果'a'爲空,那麼我們只需檢查'b'是否爲空。 – KaliMa
@KaliMa,這是正確的。 '(b == null)'可以寫成'(a == b)',或者,但我認爲這更令人困惑。 –
這是正確的,可悲的是,你必須添加額外的空檢查。 所以,你或者可以寫入
if ((a != null && a.equals(b)) || (a == null && b == null))
或代碼不得接受null
值。
這是不正確的。你需要'a!= null && a.equals(b)'。 –
謝謝安迪,編輯它。 – wolle
短的方式可以是:
boolean c = (a != null && b != null) ? a.equals(b) : false;
if (c){
...
}
'Objects.equals(a,b)'。 –
「如果其中一個爲空,它會崩潰」具體來說,如果'a'爲空,則崩潰。對'b'無所謂。 –
@AndyTurner'Objects.equals'自Java 7.否則,好的舊'null'檢查。 – Mena