java - 比较Java中的两个字符串

标签 java android string

<分区>

Possible Duplicate:
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”

最佳答案

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

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

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

另请注意,在调用 equals() 时将字符串文字放在第一位是一个好习惯,这样您就可以安全地防止第二个字符串为 null,避免可能的 NullPointerException

关于java - 比较Java中的两个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11072925/

相关文章:

Java - 在 JavaDB 中将图像存储为 Blob

java - IntelliJ - 输入未转义的 UTF-8 非 ASCII 字符

java - 在 Android 中组合来自服务器的 JSON 表

android - apk文件不包含java文件

android - FLutter - 尝试运行应用程序时出错

python - 根据单独的字典有条件地创建字典

java - FileChannel.position() 线程安全吗?

Java 代码仅从测试方法返回一个对象

c++ - 我可以从 C++ 中的 std::string 中分离缓冲区吗?

java - 为什么在java中尝试将大写字母转换为小写字母时末尾会出现额外的空格,反之亦然