我不是java人,所以我不确定这是否只是一个语言问题。
我正在编写一个 Android 应用程序。在应用程序中的某一时刻,我会与整数(版本号)进行比较,以查看它们正在使用的应用程序版本,如果它们不是最新的,则执行某些操作。我注意到我的操作代码始终在运行。因此,我使用调试器进行了检查,并检查它们是否正在运行正确的版本,我有这样的代码:
if (savedVersionCode != currentVersionCode){
//perform work
}
both savedVersionCode
and currentVersionCode
是整数并且等于相同的值(在本例中为 226),但它仍然会跳入并执行工作。
我确实注意到,虽然这些值都是 226,但每个整数(如果您在 Eclipse 中检查它)都有一个id
他们都是不同的。
对这里发生的事情有什么想法吗?
如果他们是Integer
值,您正在比较参考。两个不同的对象可以有效地表示相同的数字。尝试:
if (savedVersionCode.intValue() != currentVersionCode.intValue())
or
if (!savedVersionCode.equals(currentVersionCode))
请注意,您可能已经使用了较低的数字,因为自动装箱将为 0 附近的小范围内的数字返回相同的引用。例如:
Integer x = 5;
Integer y = 5;
System.out.println(x == y); // Prints true
x = 1000;
y = 1000;
System.out.println(x == y); // *Could* print true, but probably won't
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)