2

Javanull != somethingとの間に違いはありますか?something != nullそして、違いがある場合は、どちらを使用する必要があり、その理由は何ですか?

4

7 に答える 7

5

null != somethingと の間に違いはありませんsomething != nullperson.getName().equals("john")と の違いについて考えている必要があります"john".equals(person.getName())。最初のものはNullPointerExceptionif getName()returnsをスローしますnullが、2 番目のものはスローしません。しかし、これはあなたの質問の例には当てはまりません。

于 2013-01-29T08:44:33.700 に答える
5

おそらく、一部の言語では「bla」を返すだけでなく、「bla」を myVariable に割り当てる誤って書き込む可能性があるため、"bla" == myVariable代わりに書き込む、いわゆる joda 条件から来ています。myVariable == "bla"myVariable = "bla"

于 2013-01-29T08:44:58.163 に答える
4

これを (C や C++ などの言語で) 実行するための "Yoda 条件" の理論的根拠は、この (Java) ケースには適用されないことを指摘したいだけです。

  1. Java では、一般的な式をステートメントとして使用することは許可されていません。

     something == null;
    

     null == something;
    

    コンパイルエラーになります。

  2. something == nullとの型something = nullは異なります。それぞれブール型といくつかの参照型。この場合、次の両方を意味します。

     if (something = null) {
         ...
     }
    

     if (null = something) {
         ...
     }
    

    コンパイルエラーになります。

実際、コンパイル エラーが発生する場合と発生しない場合の現実的な例を思いつきません。したがって、間違い防止に関しては何も達成しません。null == somethingsomething == null

于 2013-01-29T09:39:42.210 に答える
1

違いはありませんが、コードを読みやすくするために使用する人もいます。

于 2013-01-29T08:42:56.993 に答える
1

パフォーマンスの観点からは違いはありません。オペレーターの両側が何らかの方法で実行されます。しかし、より読みやすいコードについては、2番目のコードの方が読みやすいようです

  obj.getSomething().getAnotherThing().doSomething() != null

  null != obj.getSomething().getAnotherThing().doSomething()

ただし、変数またはパラメーターを比較するだけの場合は、これの方が読みやすくなります

  something != null

もちろん、これは読者の感覚に依存します。

于 2013-01-29T08:45:09.197 に答える
0

どちらも同じで違いはありません。

于 2013-01-29T08:45:32.277 に答える
0

Javaでは、比較する場合、常に変数を左側に配置し、値を右側に配置する必要があります...

于 2013-01-29T08:45:01.863 に答える