Javaでは、大文字のDoubleはnullでもかまいません。倍精度と同等かどうかのテスト
は、しかし、私はダブルスa
とb
があれば、私はこれを行う:
if (a.equals(b))
それらのいずれかがnullの場合、それがクラッシュ。それらを比較するより良い方法はありますか?
Javaでは、大文字のDoubleはnullでもかまいません。倍精度と同等かどうかのテスト
は、しかし、私はダブルスa
とb
があれば、私はこれを行う:
if (a.equals(b))
それらのいずれかがnullの場合、それがクラッシュ。それらを比較するより良い方法はありますか?
ジャワ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)'が必要です。 Andyさん、ありがとうございます。 –
ありがとうございました。 – wolle
短い方法が考えられます。
boolean c = (a != null && b != null) ? a.equals(b) : false;
if (c){
...
}
「Objects.equals(a、b)」です。 –
"いずれかがnullの場合はクラッシュします。"特に、 'a'がnullの場合はクラッシュします。 'b'については関係ありません。 –
Java 7以降@AndyTurner 'Objects.equals'。それ以外の場合は古い' null'チェック。 – Mena