Java 相等返回错误。什么';这个密码怎么了?
我有java语法。对不起,我还不明白为什么会这样Java 相等返回错误。什么';这个密码怎么了?,java,Java,我有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"); }
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不同?您必须对字符串使用
.equals()
进行比较
试一试
字符串必须与.equals()方法进行比较。您使用的是引用相等,而不是对象相等 由于文本表中的
“-1”
与新分配的a
具有不同的堆地址,因此它返回false
如果由于某种原因,您发现自己分配了许多代码>字符串S/<代码>对象,这些对象共享相同的值,并希望通过引用来测试它们,请考虑使用<代码> StrySyIn()/<代码>:
== 比较在您的案例中不相同的引用,所以如果要比较字符串值,请使用 .equals()方法==运算符检查两个对象是否完全相同。您可以使用equals方法检查值是否相等尝试打印a并查看差异;)使用.equals()比较StringThory I来自C#behavior。。感谢使用
==
(reference equals)运算符时,甚至不会访问这些对象。唯一要测试的是它们的堆地址。
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");
}
}
}
final String a = [...].intern(); // allocated
if (a == SOME_INTERNED_STRING_1) {
[...]
else if (a == SOME_INTERNED_STRING_2) {
[...]
}