Android 两个具有相同值的整数不正确相等
我不是java人,所以我不确定这是否只是一个语言问题。
我正在编写一个 Android 应用程序。在应用程序中的某一时刻,我与整数(版本号)进行比较,以查看它们正在使用的应用程序版本,如果它们不是最新的,则执行某些操作。我注意到我的操作代码始终在运行。因此,我使用调试器进行了检查,并检查它们是否正在运行正确的版本,我有这样的代码:
if (savedVersionCode != currentVersionCode){
//perform work
}
savedVersionCode
和 currentVersionCode
都是整数并且等于相同的值(在本例中为 226),但它仍然会跳入并执行工作。
我确实注意到,虽然这两个值都是 226,但每个整数(如果您在 eclipse 中检查它)都有一个 id 并且它们都是不同的。
对这里发生的事情有什么想法吗?
I'm in not a java guy, so I'm not sure if this is just a language issue.
I am writing an Android app. At one point in the app I compare to intgers (version #) to see what version of the app they are using, to perform some action if they are not up to date. I notice that my action code is always being run. So I checked with a debugger and where I check to see if they are running the correct version, I have code like this:
if (savedVersionCode != currentVersionCode){
//perform work
}
both savedVersionCode
and currentVersionCode
are Integers and are equal to the same value (226 in this case), but it still jumps in and performs the work.
I do notice that although that values are both 226, each integer (if you inspect it in eclipse) have an id
and they are both different.
Any ideas on whats going on here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果它们是
Integer
值,则您正在比较引用。两个不同的对象可以有效地表示相同的数字。尝试:或
请注意,您可能已经使用了较低的数字,因为自动装箱将为 0 附近的小范围内的数字返回相同的引用。例如:
If they're
Integer
values, you're comparing the references. Two different objects can effectively represent the same number. Try:or
Note that you may well have managed with lower numbers, as autoboxing will return the same references for numbers in a small range around 0. So for example: