帮忙看下这样一段代码 关于equals
父类:
public class fu {
String fuName ="一";
}
子类:
public class zi extends fu{
String ziName ="一";
public void fun(){
if(fuName.equals(ziName)){
System.out.println("同");
}
else{
System.out.println("不同");
}
}
}
主函数:
public class main {
public static void main(String[] args) {
zi Zi =new zi();
Zi.fun();
}
}
不重写equals,equals会自动比较地址是否相同。
在这里,new子类等于同时new了一个父类。个人理解为子类和父类在内存中的地址不同.所以无论fuName和ziName的值是否相同,都输出“不同”。
但是这个程序里的equals并没有比较fuName和ziName的地址,是直接比较的值,可以正确判断是否相同。
同样new两个不同名子类,equals就开始比较地址了。
这是为什么呢? 刚刚自学了几天 基础不行,懂得不多,跪等解答