jdk里面的equals方法为:
public boolean equals(Object obj) {
return (this == obj);
}
那不重写的话,应该效果跟==一样才对啊,怎么现实不是呢?哪里理解错了呢?
class Test
{
public static void main(String args []){
String s1 = new String("ss");
boolean b1=s1.equals("ss");
System.out.println(b1); //返回true
//返回false
boolean b2;
if(s1=="ss"){
b2=true;
}else{
b2=false;
}
System.out.println(b2);
}
}
为什么一个返回true,一个返回false
------解决方案--------------------
因为String重写了equals
s1=="ss"这里返回false是因为s1的地址和”ss“不一样
------解决方案--------------------
不知道你再说什么,String是重写过equals方法的
------解决方案--------------------
不重写的话,equals 比较的是 内存地址
String 重写了 equals 方法,比较的是具体的每个字符是否相等了,所以第一个equals是true了
第二个 比较的就是内存地址了 “ss” 是常量池的对象,s1 指向的是堆中的对象,所以就是false了