私は多くの場所で定数値が最初に使用され、次に変数が例えば( "ram")等価(a)であり、多くの場所で変数が最初に使用され、次に定数たとえば、比較対象の値。a.equals( "ram")。変数を最初に使用してからオブジェクトを比較するときに変数を最後に使用することの違いは?
a.equals( "ram")と( "ram")の違いは何ですか?a(a)? どちらが使いやすく、なぜですか?
私は多くの場所で定数値が最初に使用され、次に変数が例えば( "ram")等価(a)であり、多くの場所で変数が最初に使用され、次に定数たとえば、比較対象の値。a.equals( "ram")。変数を最初に使用してからオブジェクトを比較するときに変数を最後に使用することの違いは?
a.equals( "ram")と( "ram")の違いは何ですか?a(a)? どちらが使いやすく、なぜですか?
( "ram")。(a)と同等です。 aがnullであっても、コードは決して破られません。 は、NULLポインタ例外から私たちを救います。
しかし、aがnullではないと考えられる場合は、例外を隠すことになります。 –
これは不自然にも読み込み、メンテナンスを妨げます。 「ヌル」チェックを避けるほうが良いという前提は明らかに真実ではなく、ここの回答者はエンジニアリングの理由が間違っていることを示しています。さもなければ、後方のイディオムを支持する議論は、論理ではなく感情に基づいている。私はこのコメントのいずれかの形式を支持するつもりではなく、私たちが論理に関する決定を下すことを唯一嘆願します。 –
変数a
がnull
になることが許可されている場合は、null
チェックをスキップできるので、最初のスタイルが安全です。
あなたは
if (a.equals("ram")) { ... }
を書くときあなたはa
は、nullポインタ例外を避けるためにnull
ではないことを確認する必要があります。任意の非ヌル参照値x
、x.equals(null)
について
false
を返すべきである:equals()
メソッドは例外をスローすることなくnull
引数を処理するために必要とされるので、これはif ("ram".equals(a)) { ... }
ために必要ではありません。
'' ram ".equals(a)'(かっこがある理由はわかりません)は、NPEを投げないという点で "より良い"です。 'a'は' null'です。 –
この質問は何度も繰り返し尋ねられています(例:[here](http://stackoverflow.com/questions/5712100/interview-java-equals))。最初に研究してください。 – Seelenvirtuose
a.equals( "ram")はNullPointerExceptionをスローする可能性があります。 –