具有相同值的Android两个整数不能正确等同

Mat*_*odd 3 java android integer

我不是一个java人,所以我不确定这只是一个语言问题.

我正在写一个Android应用程序.在应用程序的某一点上,我将与intgers(版本号)进行比较,以查看他们正在使用的应用程序的版本,如果它们不是最新的,则执行某些操作.我注意到我的动作代码一直在运行.所以我检查了一个调试器,我在哪里检查它们是否正在运行正确的版本,我有这样的代码:

if (savedVersionCode != currentVersionCode){
   //perform work
}
Run Code Online (Sandbox Code Playgroud)

both savedVersionCodecurrentVersionCode都是整数并且等于相同的值(在这种情况下为226),但它仍会跳入并执行工作.

我注意到虽然这些值都是226,但是每个整数(如果你在eclipse中检查它)都有一个id 并且它们都是不同的.

关于最新情况的任何想法?

Jon*_*eet 11

如果它们是Integer价值观,那么您就是在比较参考文献.两个不同的对象可以有效地表示相同的数字.尝试:

if (savedVersionCode.intValue() != currentVersionCode.intValue())
Run Code Online (Sandbox Code Playgroud)

要么

if (!savedVersionCode.equals(currentVersionCode))
Run Code Online (Sandbox Code Playgroud)

请注意,您可能使用较低的数字进行管理,因为自动装箱将返回大约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
Run Code Online (Sandbox Code Playgroud)