Java长比较

Java长比较,java,android,comparison,long-integer,Java,Android,Comparison,Long Integer,简介:我在Android中有一种做长期比较的方法。基本上,我比较日期(时间戳/年代)。其中一个比较检查日期是否相等“如果(a2==a1&&b2==b1)” 问题:问题是即使这些数字相等,“如果”也不起作用。我还附上了调试屏幕上的一个屏幕截图,其中的值在示例中进行了比较 问题:您知道为什么该条件不起作用吗?我不明白,因为这只是数学问题。也许有一个演员的问题,我没有看到?所有其他情况下,“如果”都有效 方法: public ArrayList<Integer> getConflicts(

简介:我在Android中有一种做长期比较的方法。基本上,我比较日期(时间戳/年代)。其中一个比较检查日期是否相等“如果(a2==a1&&b2==b1)”

问题:问题是即使这些数字相等,“如果”也不起作用。我还附上了调试屏幕上的一个屏幕截图,其中的值在示例中进行了比较

问题:您知道为什么该条件不起作用吗?我不明白,因为这只是数学问题。也许有一个演员的问题,我没有看到?所有其他情况下,“如果”都有效

方法

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;

    }

public ArrayList getConflicts(ArrayList

Long
是一个对象。如果键入
a1==a2
,则检查a1是否为a2-相同的对象,而不是相同的值。如果要对其进行比较,则必须写入
a1.equals(a2)
-如
String
中所示

如果您真的不需要
Long
,请使用
Long
-这样做会更容易,也更有效

尝试以下方法:

long a1,a2;
long b1,b2;

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

}

尝试原语类型“long”而不是“long”这是一个包装类。它起作用了…你能帮我理解为什么人们不停地投票我的问题吗?这是一个很棒的平台,但人们只是不投票,我很想写它。我的另一个帐户我不能再发布问题了,因为人们一直这样做。Aff。如果人们不能问他们不知道的东西,我不知道这个平台的意义哦……我认为负票是因为这个问题和安卓无关,而是和Java有关,对象和原语的比较和相等是Java学习的基本主题。在谷歌或任何一本书中搜索可能会得到更快的响应