Java长期比较

时间:2017-04-25 09:52:58

标签: java android comparison long-integer

简介:我在Android中有一个方法可以进行长距离比较。基本上,我比较日期(时间戳/时期)。其中一个比较检查日期是否相等" if(a2 == a1&& b2 == b1)"。

问题:问题是,即使这些数字相等," if"不起作用。我还在调试屏幕上附上了一个屏幕截图,其中包含了一个示例中要比较的值。

问题:你知道为什么病情不起作用吗?我无法想象,因为只有数学应该有效。也许有一个我没有看到的铸造问题?所有其他情况下"如果"的工作原理。

方式

public ArrayList<Integer> getConflicts(ArrayList<AssetBooking> assetBookings) {

        Epoch epoch = new Epoch();
        ArrayList<Integer> conflicts = new ArrayList<>();

        for (AssetBooking aB : assetBookings) {

            Long a1 = aB.getFromDatetime() / 1000;
            Long b1 = aB.getToDatetime() / 1000;

            Long a2 = epoch.getEpochNoSeconds(fromDatetime);
            Long b2 = epoch.getEpochNoSeconds(toDatetime);

            if (a2 == a1 && b2 == b1) {
                System.out.println("equals");
            }

            if ((a2 < a1 && b2 >= a1) || (a2 == a1) || (a2 > a1 && b2 < b1) || (a2 > a1 && a2 < b1) || (a2 == a1 && b2 == b1)) {
                conflicts.add(assetBookings.indexOf(aB));
            }

        }

        return conflicts;

    }

截图enter image description here

2 个答案:

答案 0 :(得分:5)

Long是一个对象。如果键入a1 == a2,则检查a1是否为a2 - 相同的对象,而不是相同的值。如果你想比较它,你必须写a1.equals(a2) - 如String

如果你真的不需要Long,请使用long - 它会更容易,也会更有效

答案 1 :(得分:1)

试试这个:

long a1,a2;
long b1,b2;

if (a2.equals(a1) && b2.equals(b1)) {

}