次の 2 行のコードを検討してください。
if (test ! = null)
と
if (null != test)
パフォーマンスに関して、上記の2つのステートメントに違いはありますか? 私は多くの人が後者を使用しているのを見てきました.
変わりはない。
2 つ目は、プログラマーが常に比較ではなく代入を行う C/C++ が原因です。
例えば
// no compiler complaint at all for C/C++
// while in Java, this is illegal.
if(a = 2) {
}
// this is illegal in C/C++
// and thus become best practice, from C/C++ which is not applicable to Java at all.
if(2 = a) {
}
Javaコンパイラはコンパイルエラーを生成しますが。
だから私は個人的に読みやすさのために最初のものを好みます.人々は左から右に読む傾向がありif test is not equal to null
、null is not equal to test
.
それらはまったく同じです。2 番目のものは、equals を使用する場合に意味があります。
if("bla".equals(test))
while をスローすることはできませんNullPointerException
:
if(test.equals("bla"))
できる。
パフォーマンスの違いはありませんが、個人的には 2 番目の違いがややこしく感じます。
2 つ目は「ヨーダ条件」のように見えます。つまりif(2 == x) ...
、読みにくいです。
後者を使用するのはベスト プラクティスではありません。どちらも同等ですが、前者の方が読みやすいです。
この「ベスト プラクティス」は、ブール値が存在しない C に由来します。代わりに整数が使用されif (foo = 1)
、構文エラーではありませんが、 とは完全に異なりif (foo == 1)
ます。
Java では、ブール式のみが if の中に入れることができ、この方法はあまり意味がありません。
ほとんどの最新の IDE で検出される基本的なタイプミスを避けるのがベスト プラクティスです。これは、null ではないより複雑な型を比較したい場合があり、偶発的な代入を行ってしまうことがあるためです。したがって、パターンは同じままですが、これがパフォーマンスにリンクされているのを見たことがなく、特別なバイト コードが生成されるのを見たことがありません。
アイデアは、最初に静的な既知の値を取得することです。そのため、比較を実行するときに奇妙な例外をスローすることはできません。
ただし、どちらの方法も「より正確」というわけではないため、どちらを使用するかは完全にあなた次第です。
違いはありません。しかし、2 番目の方法では、 のようなタイプミスを回避できますtest = null
。2 番目の方法では、コンパイラ エラーが発生するためです。
2つの形式に実際の違いはありません。パフォーマンスの問題はありませんが、次の注意事項があります。
=
代入用であり、==
演算子はテストと同等のものですが、nullは代入ステートメントで使用できないため、2番目のアプローチ開発者が取得する代わりに通常はif
ステートメントで使用します。=
==
Compile-Time-Error
Left-Side