-4

我有java语法。抱歉,我仍然不明白为什么会这样。

public class TestString {
  public static void main(String [] args){
    int i=-1;
    String a=((Object)i).toString();
    if(a=="-1"){
        System.out.println("Same");
    }else{
        System.out.println("Not");
    }
  }
}

然后结果是“不是”为什么-1字符串与对象中的-1 int不同的问题是什么?

4

5 回答 5

5

您必须使用.equals()字符串进行比较。

String 的 equal 方法以这种方式被覆盖。

尝试

public class TestString {
  public static void main(String [] args){
    int i=-1;
    String a=((Object)i).toString();
    if(a.equals("-1")){
        System.out.println("Same");
    }else{
        System.out.println("Not");
    }
  }
}
于 2013-09-06T08:37:20.143 回答
0

字符串必须与 .equals() 方法进行比较。

于 2013-09-06T08:37:23.977 回答
0

您正在使用引用相等而不是对象相等

由于"-1"文字表中的堆地址与新分配的不同a,因此它返回false

如果由于某种原因您发现自己分配了许多String共享相同值的对象并希望通过引用来测试它们,请考虑使用String#intern()

final String a = [...].intern(); // allocated
if (a == SOME_INTERNED_STRING_1) {
  [...]
else if (a == SOME_INTERNED_STRING_2) {
  [...]
}
于 2013-09-06T08:39:13.933 回答
0

==

比较与您的情况不同的参考,因此如果您想比较字符串值,请使用

.equals() 方法

于 2013-09-06T08:41:53.323 回答
0

== 运算符检查两个对象是否完全相同。您可以使用 equals 方法检查值是否相等

于 2013-09-06T08:44:12.907 回答