我的整数应该是相等的(我通过输出来验证它)。但是在我的if
条件下,Java没有看到这些变量具有相同的值。
我有以下代码:
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]);
它会产生以下输出:
FINE: >>>>>> different
FINE: Compare:: 60,145 -> 60,145
也许我不得不补充说,point
的定义是这样的:
Integer[] point = new Integer[2];
并从循环构造函数中获取pay
us:
for (Integer[] pay : payoffs2exchanges.keySet())
所以,这两个变量都是整型的。
发布于 2010-12-13 20:28:07
如果它们是简单的int
类型,它就可以工作。
对于Integer
,请在比较中使用.intValue()
、compareTo(Object other)
或equals(Object other)
。
发布于 2015-08-31 23:01:58
在java中,-128到127范围内的数值被缓存,因此如果您尝试比较
Integer i=12 ;
Integer j=12 ; // j is pointing to same object as i do.
if(i==j)
print "true";
这是可行的,但如果您尝试使用超出上述给定范围的数字,则需要将它们与equals方法进行值比较,因为"==“将检查两者是否是相同的对象而不是相同的值。
发布于 2010-12-13 23:14:42
当您尝试比较两个对象时( Integer是一个对象,而不是一个变量),结果总是它们不相等,
在本例中,您应该比较对象的字段(在本例中为intValue)
尝试声明int变量而不是Integer对象,这会有所帮助
https://stackoverflow.com/questions/4428774
复制相似问题