繁体   English   中英

如何比较日期数组值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM