[英]how to compare date array values
我有存储日期和时间的日期数组。 它有2个值,两者相同。
2014年1月29日星期三00:18:48
当我比较它们时
date1[1]==date1[2]
它返回false。
完全令人困惑。 当它们具有相同的值时,为什么会发生这种情况。
为了让你明白,如果它是一个Date
数组,那么Date
对象应该使用比较
Date.compareTo(Date arg)
如果它是包含日期的String数组,则应使用进行比较
String.equals(String arg)
==
是用于检查相等性的条件测试运算符。 这通过比较左侧和右侧操作数中的实际值来进行相等性测试。 因此,这仅应用于测试原始值的相等性。 因此,它说避免在测试对象类型的相等性时使用==
要比较Date
,可以在Java.util.Date
使用before()
after()
方法。
同样, Date
也是一个Java
对象,因此您也可以使用equals()
Date date1=new Date();
Date date2=new Date();
if(date1.before(date2)){
System.out.println("date1 before date2");
} else if(date1.after(date2)){
System.out.println("date1 after date2");
} else if(date1.equals(date2)){
System.out.println("date1 and date2 equals");
}
对象类型的比较如下:
object1.equals(object2)
仅将原语(而不是其包装的Object类型)与“ ==”运算符进行比较。
但是,如果您想知道某个对象是完全相同的对象(内存中的相同地址,相同的引用),则应使用“ ==”运算符。
date1[1].equals(date1[2])
==
检查引用是否相同。 您需要等于,因为您想比较内容。
对对象使用equals
方法
date1[1].equals(date1[2])
请使用数字代替日期。 它们更加可靠,尤其是涉及不同的日期子类时。
date[1].getTime()==date[2].getTime()
在看不到整个代码的情况下很难为您提供建议,但是我认为您必须使用equals()之类的方法。 在非基本类型上使用运算符==时,您正在比较的是引用而不是值。
运算符==
比较对象的引用。 例如:
public static void main(String[] args) {
StringBuilder s = new StringBuilder();
s.append("Hello");
if(s.toString() == "Hello")
System.out.println(s);
}
什么也不会显示。 您可以使用==
比较原始类型:
int i = 5;
if(i == 5)
System.out.println(i);
这将显示5
。
如果要比较2个对象的内容,则必须使用equals()
方法:
String s = "Hello";
if(s.equals("Hello"))
System.out.println(s);
将显示Hello
。
确保对象的类覆盖equals()
和hashCode()
。
如果您的目标是比较对象,则最好的方法是调用compareTo()
,但是您的类必须实现Comparable
接口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.