在Java中比较两个字符串

时间:2012-06-17 16:27:18

标签: java android string

  

可能重复:
  Java String.equals versus ==

我知道这是一个愚蠢的问题,但为什么这段代码不起作用。

boolean correct = "SampleText"  == ((EditText)findViewById(R.id.editText1)).getText().toString();
    if(correct) ((TextView)findViewById(R.id.textView1)).setText("correct!");
    else ((TextView)findViewById(R.id.textView1)).setText("uncorrect!");  

重点是检查“editText1”的内容是否等于“Sample Text”

5 个答案:

答案 0 :(得分:26)

在Java中,必须使用equals()而不是==来比较两个字符串(通常是两个对象)。 ==运算符测试 identity (意思是:测试两个对象在内存中是否完全相同),而方法equals()测试两个对象 identity (意思是:测试两个对象是否具有相同的),无论它们是两个不同的对象。你几乎总是对平等感兴趣,而不是对身份感兴趣。

要修复代码,请执行以下操作:

String str = ((EditText)findViewById(R.id.editText1)).getText().toString();
boolean correct = "SampleText".equals(str);

另请注意,在调用equals()时首先放置字符串文字是一个好习惯,这样,如果第二个字符串为null,您就会安全,避免可能NullPointerException 1}}。

答案 1 :(得分:1)

比较两个字符串的值(为了相等),你需要使用equals,而不是==(如果你不关心区分大小写,则使用equalsIgnoreCase)。
使用equals将检查字符串的内容/值(而不是“==”,它只检查两个变量是否指向同一个对象 - 不是相同的值)。

答案 2 :(得分:1)

在java中比较2个对象的正确方法是使用equals() method of Object class 由于String是java中的一个对象,因此应该以相同的方式进行比较。

比较字符串的正确方法是,

s1.equals(s2)

所以你可以使用它,

boolean correct = "SampleText" .equals (((EditText)findViewById(R.id.editText1)).getText().toString());

答案 3 :(得分:0)

在Java中Strings必须与他们的equals()方法进行比较:

String foo = "foo";
String bar = "bar";
if (foo.equals(bar)) System.out.println("correct");
else System.out.println("incorrect");

答案 4 :(得分:0)

((TextView)findViewById(R.id.textView1)).setText("SampleTest".equals(((EditText)findViewById(R.id.editText1)).getText().toString()) ? "correct!" : "incorrect!");

它有点长,而且可能是你能做到这一点的更好方法。 .toString()感觉很奇怪!