==

2012-01-23 4 views
0

のプログラミングロジックについて両方の値が真であるif文のif文を処理するメソッドを実行すると、この奇妙な動作が発生します。==

ここにコードとその外観を示します。右上に丸で囲まれたところに、classNameの値が赤で表示されます。

なぜこのようなことが起こっているのか、より良い方法があると思われる方は、私がすでに使用しているコーディングロジックに対応してください。デバッグクラス名= "RWB"

public void ClassReturn(){ 
     String tempName = getIntent().getExtras().getString("CLASS_NAME"); 
     if(tempName == null){ 
      Log.i("Intent Delivery", "Intent deliver has failed."); 
     }else{ 
     String className = tempName; // This is return back to the correct class your in 
      if(className == "rwb"){ 
       Intent intent = new Intent(BasicOption.this, ReadWholeBook.class); 
       startActivity(intent); 
      } 
     } 
    } 

Strange Coding behaviour

+2

イメージはあまりにも低い解像度を伝えます。あなたは関連するセクションだけを再投稿できますか? –

+1

もちろん、画像を右クリックして画像をクリックすることもできます。コードを追加するBrb。 – wesdfgfgd

+1

新しいタブで画像を開くとフルサイズになります。http://i.stack.imgur.com/t2cC4.png –

答えて

14

使用.equals()2つのオブジェクトが論理的に等しい場合、彼らは同じオブジェクトである場合==チェックを使用し、チェックするためには

。 Javaで

文字列があるためインターンのより複雑になる可能性がありますが、基本的には同じです二つの文字列の内容を確認する.equalsを()または.equalsIgnoreCase()を使用します。

+0

ありがとうございました。私は完全に矛盾を忘れてしまった。 – wesdfgfgd

2

==を使用して2つの文字列を比較しています。代わりにequalsメソッドを使用してください。文字列の比較のために

2

使用className.equals("rwb")、ない==

2

className.equals( "anotherString")を使用し、==文字列の比較を使用しないでください。

2

この場合、String.equals()を使用してください。 ==は主に、オブジェクトが同じ正確なオブジェクトであるかどうかをチェックするためのものです。

2

Javaでは、演算子をオーバーロードすることはできません。そのため、Stringの論理値を比較するのではなく、オブジェクトIDを比較します。 string.equals(other_string)に切り替えると、期待どおりに動作します。コードに目を細め

1

、あなたは==

if (className == "rub")... 

を使用して文字列を比較しているあなたは、(等号を使用する必要があります)の代わりに、すなわち(私は「こする」私はそれがnullになることはありません知っている最初の原因を置く)

if ("rub".equals(className))... 
1

文字列を検証するためにequalsメソッドを使用しますが、私のrecomendationは、この使用されても、あなたが、内容について確認する必要があります:

myString.trimを()のequals(myString2.trim())。 ;

大文字にすることもできます。

Saludos