我有日期数组存储日期和时间。它有2个值。两个都是一样的。
1月29日星期三00:18:48 GMT 2014
当我比较它们时
date1[1]==date1[2]
它返回false。
完全令人困惑。当它们具有相同的值时,为什么会这样。
答案 0 :(得分:2)
为了让您明白,如果它是Date
数组,则应使用
Date
对象
Date.compareTo(Date arg)
如果它是包含日期的String数组,则应使用
进行比较String.equals(String arg)
==
是用于检查相等性的条件测试运算符。这通过比较左右操作数中的实际值来进行相等性测试。因此,这应该仅用于测试原始值的相等性。因此,它说避免使用==
来测试对象类型上的相等性
答案 1 :(得分:1)
要比较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");
}
答案 2 :(得分:1)
对象类型的比较如下:
object1.equals(object2)
只将原语(不是它们包装的对象类型)与“==”运算符进行比较。
但是,如果你想知道一个对象是完全相同的对象(内存中的相同地址,相同的引用),你应该使用“==”运算符。
答案 3 :(得分:1)
date1[1].equals(date1[2])
==
检查引用是否相同。你需要等于,因为你想比较内容。
答案 4 :(得分:1)
对象使用equals
方法
date1[1].equals(date1[2])
答案 5 :(得分:1)
使用日期的数值代替。它们更可靠,特别是涉及不同的日期子类时。
date[1].getTime()==date[2].getTime()
答案 6 :(得分:1)
如果没有看到整个代码,很难建议你,但我认为你必须使用方法equals()或类似的东西。当您对非基本类型使用operator ==时,您要比较引用,而不是值。
答案 7 :(得分:1)
运算符==
比较对象的引用。例如:
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
接口。