字符串看起来一样,但测试表明它们是不同的

时间:2012-09-07 09:49:24

标签: java string

我有一些代码实际上是以下内容:

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 应该最终完全相同,而且大部分时间都是这样,但偶尔会出现错误对话框。令人困惑的是,当对话框报告时,两个字符串与我相同。我想知道什么样的事情会导致这个问题?

4 个答案:

答案 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.