前一段时间在开发时,遇到一个时间类型的比较,以为可以向常见的变量比较方式来比较(如:a==b,a!=b),进而实现业务,后来发现是错误的。
java.util.Date date1=new Date();
java.util.Date date2=new Date();
if(date1!=date2){
system.out.println("不相等");
return;
}else{
sysotem.out.println("相等");
//执行相关业务
}
理论应该是走下面else分支,但是事实上测试后,发现走的是if分支。
查了一下API文档,看到Date有两种比较方法,compareTo,equals.
date1.equals(date2).equals参数是Object类型,也就是所有类型的基类,可接受任务类型的参数。
date.compareTo(date2)<-1,则是date1<date2
date.compareTo(date2)==0,则是date1==date2
date.compareTo(date2)>1,则是date1>date2
使用equals,compare方法来,可以得到正确的程序控制处理