慕沐8454760
2018-07-19 15:10
为什么结果还是显示一样的,两个age的值都不一样
public class HelloWorld{ public static void main(String[] args) { Dog1 d = new Dog1(); d.age = 20; Dog1 d1 = new Dog1(); d1.age = 45; if (d.equals(d1)){ System.out.println("两个对象是相同的"); }else { System.out.println("两个对象是不同的"); } } }
结果:两个对象是不同的
你把你重写的equals的代码也发出来看看?
public class HelloWorld {
public static void main(String[] args){
HelloWorld h =new HelloWorld();
HelloWorld h1 =new HelloWorld();
if(h.equals(h1))
{
System.out.println("相同");
}else
{
System.out.println("不同");
}
}
}
/*结果输出为:不同*/
你比较的并不是age。。。而是整个对象 d和d1 都是来自同一个地址Dog1的,要是想比较age你可以这样写:
if(d.age.equals(d1.age)) 再输出看看
注意:equals方法不能作用于基本数据类型的变量
如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。
首先 , equals方法不是用来比较两个值是否相等,而是用来比较两个对象的引用是否相等,即是否指向同一个对象,或者引用类型的变量所指向的对象的地址;你的代码里面,两个age都是通过同一个对象Dog1来赋值的,所以输出的结果为 “两个对象为相同的”。
Java入门第二季 升级版
530562 学习 · 6091 问题
相似问题