首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么Java看不到整数是相等的?

为什么Java看不到整数是相等的?
EN

Stack Overflow用户
提问于 2010-12-13 20:25:52
回答 3查看 37.9K关注 0票数 32

我的整数应该是相等的(我通过输出来验证它)。但是在我的if条件下,Java没有看到这些变量具有相同的值。

我有以下代码:

代码语言:javascript
复制
if (pay[0]==point[0] && pay[1]==point[1]) {
    game.log.fine(">>>>>> the same");
} else {
    game.log.fine(">>>>>> different");
}
game.log.fine("Compare:" + pay[0] + "," + pay[1] + " -> " + point[0] + "," + point[1]);

它会产生以下输出:

代码语言:javascript
复制
FINE: >>>>>> different
FINE: Compare:: 60,145 -> 60,145

也许我不得不补充说,point的定义是这样的:

代码语言:javascript
复制
Integer[] point = new Integer[2];

并从循环构造函数中获取pay us:

代码语言:javascript
复制
for (Integer[] pay : payoffs2exchanges.keySet())

所以,这两个变量都是整型的。

EN

回答 3

Stack Overflow用户

发布于 2010-12-13 20:28:07

如果它们是简单的int类型,它就可以工作。

对于Integer,请在比较中使用.intValue()compareTo(Object other)equals(Object other)

票数 12
EN

Stack Overflow用户

发布于 2015-08-31 23:01:58

在java中,-128到127范围内的数值被缓存,因此如果您尝试比较

代码语言:javascript
复制
Integer i=12 ;
Integer j=12 ; // j is pointing to same object as i do.
if(i==j)
   print "true";

这是可行的,但如果您尝试使用超出上述给定范围的数字,则需要将它们与equals方法进行值比较,因为"==“将检查两者是否是相同的对象而不是相同的值。

票数 5
EN

Stack Overflow用户

发布于 2010-12-13 23:14:42

当您尝试比较两个对象时( Integer是一个对象,而不是一个变量),结果总是它们不相等,

在本例中,您应该比较对象的字段(在本例中为intValue)

尝试声明int变量而不是Integer对象,这会有所帮助

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4428774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档