Java 长比较
Java Long Comparison
简介:我在Android中有一个方法可以做长比较。基本上,我比较日期 (timestamps/epochs)。其中一项比较检查日期是否相等 "if (a2 == a1 && b2 == b1)".
问题:问题是即使这些数字相等,"if" 也不起作用。我还附上了调试屏幕的屏幕截图,其中包含示例中比较的值。
问题:您知道为什么条件不起作用吗?我想不通,因为这只是数学应该起作用。也许存在我没有看到的铸造问题?所有其他情况 "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;
}
截图:
Long
是一个对象。如果你输入 a1 == a2
你检查 a1 是否是 a2 - 相同的对象,而不是相同的值。如果你想比较它,你必须写 a1.equals(a2)
- 如 String
.
如果您真的不需要 Long
,请使用 long
- 它会更容易并且更有效
试试这个:
long a1,a2;
long b1,b2;
if (a2.equals(a1) && b2.equals(b1)) {
}
简介:我在Android中有一个方法可以做长比较。基本上,我比较日期 (timestamps/epochs)。其中一项比较检查日期是否相等 "if (a2 == a1 && b2 == b1)".
问题:问题是即使这些数字相等,"if" 也不起作用。我还附上了调试屏幕的屏幕截图,其中包含示例中比较的值。
问题:您知道为什么条件不起作用吗?我想不通,因为这只是数学应该起作用。也许存在我没有看到的铸造问题?所有其他情况 "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;
}
截图:
Long
是一个对象。如果你输入 a1 == a2
你检查 a1 是否是 a2 - 相同的对象,而不是相同的值。如果你想比较它,你必须写 a1.equals(a2)
- 如 String
.
如果您真的不需要 Long
,请使用 long
- 它会更容易并且更有效
试试这个:
long a1,a2;
long b1,b2;
if (a2.equals(a1) && b2.equals(b1)) {
}