有点问题
import java.lang.* ;public class MyDate {
private int day;
private int month;
private int year;
public MyDate(int day, int month, int year) {
this.day = day;
this.month = month;
this.year = year;
}
public MyDate(MyDate date) {
this.day = date.day;
this.month = date.month;
this.year = date.year;
}
}
class TestMyDate
{
public static void main(String[] args)
{
MyDate day1=new MyDate(20,3,2009);
MyDate day2=new MyDate(20,3,2009);
System.out.println(day1.equals(day2));
System.out.println(day1.hashCode());
}
}
问题:day1.equals(day2)的返回值为什么是false?
----------------解决方案--------------------------------------------------------
对于Object对象,它提供了一个最最严密的实现,那就是只有是同一对象是,equals方法才返回
true,也就是人们常说的引用比较而不是值比较.你new了两次,明显不是一个对象,你的,明白!!!
----------------解决方案--------------------------------------------------------
zhi
----------------解决方案--------------------------------------------------------
回复 2楼 流星雨
恩,可以也把day2.hashCode()打印出来与day1.hashCode()对比一下我都明白了,估计他也会明白的,是吧,姐?
嘿嘿
[ 本帖最后由 多多关照 于 2009-10-16 19:19 编辑 ]
----------------解决方案--------------------------------------------------------
equals()方法应该比较的是两个对象的属性吧??
== 才是要求2个对象都指向同一个空间才对啊;
这个好像是equals(0和 == 的区别吧
----------------解决方案--------------------------------------------------------
public class AA {
public static void main(String[] args) {
String a = new String("zhangqi"); //*
String b = new String("zhangqi");
System.out.println(a.equals(b));
}
}
或者把*换成 String a = “zhangqi";
返回结果都是true!
----------------解决方案--------------------------------------------------------
补充
public class AA {
public static void main(String[] args) {
String a = new String("zhangqi");
String b = new String("zhangqi");
System.out.println(a==b);
}
}
结果是false
----------------解决方案--------------------------------------------------------
import java.lang.* ;
public class MyDate {
private int day;
private int month;
private int year;
public MyDate(int day, int month, int year) {
this.day = day;
this.month = month;
this.year = year;
}
public MyDate(MyDate date) {
this.day = date.day;
this.month = date.month;
this.year = date.year;
}
}
class TestMyDate
{
public static void main(String[] args)
{
MyDate day1=new MyDate(20,3,2009);
MyDate day2;
day2=day1;
//MyDate day2=new MyDate(20,3,2009);
System.out.println(day1.equals(day2));
System.out.println(day1.hashCode());
}
}
改一下就能出来true了
----------------解决方案--------------------------------------------------------
day1和day2是两个对象,当用new创建后,指向不同的内存地址,所以用equals判断他们的地址时,肯定是false了。
----------------解决方案--------------------------------------------------------