Java 带有number1==number2(Long类型)的条件永远不会为真?
此代码应该列出最近跳过的相同号码的最近呼叫,但这些号码正在显示,请帮助Java 带有number1==number2(Long类型)的条件永远不会为真?,java,android,Java,Android,此代码应该列出最近跳过的相同号码的最近呼叫,但这些号码正在显示,请帮助 //code Long number0=(long) 0; // loop through cursor while(mCallCursor.moveToNext()){ Long number1 = mCallCursor.getLong(0); if(number1
//code
Long number0=(long) 0;
// loop through cursor
while(mCallCursor.moveToNext()){
Long number1 = mCallCursor.getLong(0);
if(number1==number0)
continue;
else
number0=number1;
if(mCallCursor.getString(2)!=null){
String name = mCallCursor.getString(2);
System.out.println(name);
}
else
System.out.println(number1);
}
而不是
if(number1==number0)
使用
两个
Long
值可以满足equals
而不是=
它不起作用的主要原因是Long是对象,并且==运算符在测试两个对象的相等性时起作用,而不是这些对象中存储的长值。另一方面,long不是对象,而是基本体
if((long)number2 == (long)number1)
这也行
if((long)number2 == (long)number1)