为什么Integer "="运算符不适用于128和Integer值之后?有人可以解释这种情况吗?
这是我的Java环境:java版"1.6.0_37"
Java(TM)SE运行时环境(版本1.6.0_37-b06)
Java HotSpot(TM)64位服务器VM(内置20.12-b01,混合模式)
示例代码:
Integer a;
Integer b;
a = 129;
b = 129;
for (int i = 0; i < 200; i++) {
a = i;
b = i;
if (a != b) {
System.out.println("Value:"+ i + " - Different values");
} else {
System.out.println("Value"+ i + " Same values");
}
}
Run Code Online (Sandbox Code Playgroud)
控制台输出的一部分:
Value:124 - Same values
Value:125 - Same values
Value:126 - Same values
Value:127 - Same values
Value:128 - Different values
Value:129 …Run Code Online (Sandbox Code Playgroud) 我有应该是相等的整数(我通过输出验证它).但在我的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]);
Run Code Online (Sandbox Code Playgroud)
它产生以下输出:
FINE: >>>>>> different
FINE: Compare:: 60,145 -> 60,145
Run Code Online (Sandbox Code Playgroud)
可能我必须添加这样point定义:
Integer[] point = new Integer[2];
Run Code Online (Sandbox Code Playgroud)
并且pay我们从环路构造采取:
for (Integer[] pay : payoffs2exchanges.keySet())
Run Code Online (Sandbox Code Playgroud)
因此,这两个变量都具有整数类型.