我有一些代码实际上是以下内容:
String a;
String b;
a = get_string_from_complex_procedure_1();
b = get_string_from_complex_procedure_2();
if (a != b)
{
put_up_error_dialog("["+a+"] != ["+b+"]");
}
代码的设计使得a和b 应该最终完全相同,而且大部分时间都是这样,但偶尔会出现错误对话框。令人困惑的是,当对话框报告时,两个字符串与我相同。我想知道什么样的事情会导致这个问题?
答案 0 :(得分:5)
像这样改写:
String a;
String b;
a = get_string_from_complex_procedure_1();
b = get_string_from_complex_procedure_2();
if (!a.equals(b))
{
put_up_error_dialog("["+a+"] != ["+b+"]");
}
==
和!=
运算符会比较引用,而不是值。
答案 1 :(得分:1)
您无法在字符串上使用==
和!=
。要比较两个字符串使用a.equals(b) and !a.equals(b)
答案 2 :(得分:0)
在String的情况下使用==
或!=
比较引用(内存位置),以便更好地使用equals()
方法。
答案 3 :(得分:0)
使用
a.equals(b); or a.equalsIgnoreCase(b) to compare String.