课程
/后端开发
/Java
/Java入门第二季 升级版
为什么结果还是显示一样的,两个age的值都不一样
2018-07-19
源自:Java入门第二季 升级版 9-9
正在回答
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("两个对象是不同的"); } } }
结果:两个对象是不同的
慕瓜4577637
你把你重写的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)) 再输出看看
慕仔2498183
注意:equals方法不能作用于基本数据类型的变量
如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。
慕沐8454760 提问者
首先 , equals方法不是用来比较两个值是否相等,而是用来比较两个对象的引用是否相等,即是否指向同一个对象,或者引用类型的变量所指向的对象的地址;你的代码里面,两个age都是通过同一个对象Dog1来赋值的,所以输出的结果为 “两个对象为相同的”。
举报
课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙
4 回答结果显示不一样了,哪里的问题?
4 回答equals如果比较的两个内存地址一样,但是值不一样。这个接错是正确的吗?
4 回答示例中的输出结果为什么是那样的
2 回答为什么我在输出时System.out.println(className);结果是一样的
2 回答为何用父类get方法和子类get方法获取的age值是不一样的?!