gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 11:45:32 24 4
gpt4 key购买 nike

我不是 Java 专家,所以我不确定这是否只是语言问题。

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

if (savedVersionCode != currentVersionCode){
//perform work
}

savedVersionCodecurrentVersionCode 都是整数并且等于相同的值(在本例中为 226),但它仍然跳入并执行工作。

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

对这里发生的事情有什么想法吗?

最佳答案

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

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

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

关于java - Android 两个具有相同值的整数不正确相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7896603/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com