String a="A";
String b="A";
String c=new String("A");
System.out.println(a==b);//true
System.out.println(a==c);//false
我认为String a="A"; 这种形式声明的变量在比较的时候将会隐式调用equals方法,而new出来的要自己手动去调用
但是我还不明白,两个对象相互比较的时候是怎么判断的
这个是String.equals方法:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
本文探讨了 Java 中 String 类型变量的比较方式,重点分析了直接赋值与 new 关键字创建对象的区别,以及 equals 方法的具体实现原理。
1828

被折叠的 条评论
为什么被折叠?



