这两者之间有什么区别:
java.util.Date obj1;
java.util.Date obj2;
obj1.equals(obj2)
obj1.getTime() == (obj2.getTime())有毫秒差吗?
发布于 2015-02-08 08:20:23
参见Date#equals的实现
947 public boolean equals(Object obj) {
948 return obj instanceof Date && getTime() == ((Date) obj).getTime();
949 }并对getTime方法进行了比较。
Date#getTime返回“自1970年1月1日,00:00:00格林尼治时间以来的毫秒数”,您不能在上面使用equals,因为它是一个long,请参见它的签名:
public long getTime()所以你应该简单地:
obj1.equals(obj2)或者使用==运算符来比较从getTime返回的值。
发布于 2015-02-08 08:20:52
第一个比较Dates。第二个类型不编译,因为long (由getTime()返回)是一个基本类型,您不能在一个基本类型上调用一个method。
发布于 2015-02-08 08:22:28
在equals中定义的Date方法只检查两个对象的getTime()返回是否相同。因此,在使用equals和亲自检查getTime()值之间不应该有任何不同。如果所有的图书馆都写得很好,就不会有了。
但是,至少有一个Date (java.sql.Timestamp)子类覆盖equals,并将其含义更改为与其基本类不一致。因此,如果您的Date对象之一恰好是一个Timestamp,那么它的equals方法可以生成一个不同的结果。
https://stackoverflow.com/questions/28391959
复制相似问题