Java 两个值相同的整数不能正确相等

Java 两个值相同的整数不能正确相等,java,android,integer,Java,Android,Integer,我不是java人,所以我不确定这是否只是一个语言问题 我正在写一个Android应用程序。在应用程序中的某一点上,我将其与intgers(版本#)进行比较,以查看他们正在使用的应用程序的版本,如果他们不是最新的,则执行一些操作。我注意到我的动作代码总是在运行。因此,我使用调试器进行了检查,检查它们是否运行正确的版本,我有如下代码: if (savedVersionCode != currentVersionCode){ //perform work } savedVersionCode和

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

我正在写一个Android应用程序。在应用程序中的某一点上,我将其与intgers(版本#)进行比较,以查看他们正在使用的应用程序的版本,如果他们不是最新的,则执行一些操作。我注意到我的动作代码总是在运行。因此,我使用调试器进行了检查,检查它们是否运行正确的版本,我有如下代码:

if (savedVersionCode != currentVersionCode){
   //perform work
}
savedVersionCode
currentVersionCode
都是整数,都等于相同的值(在本例中为226),但它仍然跳入并执行工作

我确实注意到,尽管值都是226,但每个整数(如果您在eclipse中检查它)都有一个
id
,它们都是不同的


有什么想法吗?

如果它们是
Integer
值,那么您正在比较引用。两个不同的对象可以有效地表示相同的数字。尝试:

if (savedVersionCode.intValue() != currentVersionCode.intValue())

请注意,您可能已经使用较低的数字进行了管理,因为自动装箱将在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

在整数中,范围为-127到至少128(含),上限可使用
-XX:AutoBoxCacheMax=
选项设置
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