我有日期数组存储日期和时间。它有两个值。两者都是一样的。如何比较日期数组值
周三01月29日零时18分48秒格林尼治标准时间2014
当我比较他们
date1[1]==date1[2]
返回false。
完全混淆。为什么它们在相同的价值观时发生。
我有日期数组存储日期和时间。它有两个值。两者都是一样的。如何比较日期数组值
周三01月29日零时18分48秒格林尼治标准时间2014
当我比较他们
date1[1]==date1[2]
返回false。
完全混淆。为什么它们在相同的价值观时发生。
为了让你明白,如果它是一个Date
阵列,然后Date
对象应使用
Date.compareTo(Date arg)
如果它是一个包含日期的字符串数组进行比较的话,应该比较使用
String.equals(String arg)
==
是用于检查相等性的条件测试操作符。这通过比较左侧和右侧操作数中的实际值来进行相等性测试。所以,这应该只用于测试原始值的相等性。因此,它表示避免使用==
关于对象类型的测试相等性
换句话说,在对象之间使用'=='可以告诉两个引用是否指向同一个对象,即同一块内存。使用'=='不会*比较存储在两个对象内的数据的内容。如果这没有意义,请查阅一些基本的Java教程。 –
要比较Date
您可以使用before()
after()
方法在Java.util.Date
。
同样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)
只有原语(不是他们的包装的对象类型)是与“==”运算符相比较。然而,如果你想知道一个对象是否完全相同的对象(内存中的相同地址,相同的引用),你应该使用“==”运算符。
date1[1].equals(date1[2])
==
检查参考是否相同。你需要等于,因为你想比较内容。
使用equals
的对象
date1[1].equals(date1[2])
方法使用的数值的日期来代替。它们更可靠,尤其是涉及不同的日期子类时。
date[1].getTime()==date[2].getTime()
很难建议你没有看到整个代码,但我认为你必须使用方法equals()或类似的东西。当您在非基元类型上使用operator ==时,您正在比较引用,而不是值。
运算符==
比较对象的引用。例如:
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
。
如果你想两个对象的内容进行比较,你必须使用equals()
方法:
String s = "Hello";
if(s.equals("Hello"))
System.out.println(s);
将显示Hello
。
确保对象的类别覆盖equals()
和hashCode()
。
如果您的目标是比较对象,最好的方法是调用compareTo()
,但是您的类必须实现Comparable
接口。
你能显示完整的代码吗?数组的类型是什么?它是'String'还是'Date'对象? –
日期date1 =新日期1 [2]; – Keerthana
@Keerthana太糟糕的方式来检查对象的平等。 –