相关疑难解决方法(0)

为什么等于运算符的Integer值直到128数?

为什么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)

java integer equals-operator

25
推荐指数
3
解决办法
2万
查看次数

为什么Java没有看到整数是平等的?

我有应该是相等的整数(我通过输出验证它).但在我的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)

因此,这两个变量都具有整数类型.

java comparison if-statement equals

24
推荐指数
3
解决办法
3万
查看次数