2017-02-18 5 views
-1

私は多くの場所で定数値が最初に使用され、次に変数が例えば( "ram")等価(a)であり、多くの場所で変数が最初に使用され、次に定数たとえば、比較対象の値。a.equals( "ram")変数を最初に使用してからオブジェクトを比較するときに変数を最後に使用することの違いは?

a.equals( "ram")と( "ram")の違いは何ですか?a(a)? どちらが使いやすく、なぜですか?

+0

'' ram ".equals(a)'(かっこがある理由はわかりません)は、NPEを投げないという点で "より良い"です。 'a'は' null'です。 –

+0

この質問は何度も繰り返し尋ねられています(例:[here](http://stackoverflow.com/questions/5712100/interview-java-equals))。最初に研究してください。 – Seelenvirtuose

+0

a.equals( "ram")はNullPointerExceptionをスローする可能性があります。 –

答えて

0

( "ram")。(a)と同等です。 aがnullであっても、コードは決して破られません。 は、NULLポインタ例外から私たちを救います。

+3

しかし、aがnullではないと考えられる場合は、例外を隠すことになります。 –

+1

これは不自然にも読み込み、メンテナンスを妨げます。 「ヌル」チェックを避けるほうが良いという前提は明らかに真実ではなく、ここの回答者はエンジニアリングの理由が間違っていることを示しています。さもなければ、後方のイディオムを支持する議論は、論理ではなく感情に基づいている。私はこのコメントのいずれかの形式を支持するつもりではなく、私たちが論理に関する決定を下すことを唯一嘆願します。 –

3

変数anullになることが許可されている場合は、nullチェックをスキップできるので、最初のスタイルが安全です。

あなたは

if (a.equals("ram")) { ... } 

を書くときあなたはaは、nullポインタ例外を避けるためにnullではないことを確認する必要があります。任意の非ヌル参照値xx.equals(null)について

falseを返すべきである:equals()メソッドは例外をスローすることなくnull引数を処理するために必要とされるので、これは

if ("ram".equals(a)) { ... } 

ために必要ではありません。

関連する問題