【发布时间】:2016-03-16 00:14:56
【问题描述】:
Calendar calendar = new GregorianCalendar(2015, 2, 1);
Calendar calendar1 = calendar;
Calendar calendar2 = (Calendar)calendar.clone();
System.out.println("calendar == calendar1 is " + (calendar == calendar1));
System.out.println("calendar == calendar2 is " + (calendar == calendar2));
System.out.println("calendar.equals(calendar2) is " + calendar.equals(calendar2));
展示:
calendar == calendar1 --------------> 给你“真实”
calendar == calendar2 --------------> 给你“假”
calendar.equals(calendar2) ---------> 给你“真实”
我的问题:
当您使用“==”设置两个对象彼此相等时,您是否试图找出它们的内存地址是否彼此相等?我为混乱道歉。也许我不明白这里的比较和平等是什么?非常感谢您的所有帮助。
【问题讨论】:
-
当你用“==”设置两个对象相等时,你是不是要判断它们的内存地址是否相等?是的。因此 reference 相等。
-
哦,好的!那么这是否意味着当您创建对象的克隆时,该克隆占用不同的内存地址?非常感谢您的回复和回答
-
是的。
clone是一个独立的参考。 -
啊,我明白了@Elliott Frisch 非常感谢!我希望我能给你一张支票/信用,但我的帐户不允许我这样做。我很抱歉,但非常感谢你!
-
@MikeCAT 在哪里比较字符串?阅读问题