String a=new String("foo");
String b=new String("foo");
System.out.println(a.equals(b)); //返回 false
System.out.println(a.equals(b)); //返回 true;Object对象的equals方法的实现:
boolean equals(Object o){ return this==o; } 那到 Sting 对象的equals不是继承Object的equals ?
String b=new String("foo");
System.out.println(a.equals(b)); //返回 false
System.out.println(a.equals(b)); //返回 true;Object对象的equals方法的实现:
boolean equals(Object o){ return this==o; } 那到 Sting 对象的equals不是继承Object的equals ?
下边是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;
}
Sting 对象的equals进行了重载,如楼上所说的,这时比较的是串里的内容是否一样
Object的equals是比较两个对象的地址,
String的只要是里面的东西一样就可以乐,当然地址一样的话肯定是一样的
比较特殊阿
System.out.println(a.equals(b)); //返回 true;这两句一样的怎么回返回不同的值?
Sting 对象的equals进行了覆盖,这时比较的是串里的内容是否一样
楼主的结果是错误的,都是true