相关疑难解决方法(0)

整数包装器对象仅在值127内共享相同的实例?

这里他们是同一个实例:

Integer integer1 = 127;
Integer integer2 = 127;
System.out.println(integer1 == integer2);  // outputs "true"
Run Code Online (Sandbox Code Playgroud)

但在这里他们是不同的实例:

Integer integer1 = 128;
Integer integer2 = 128;
System.out.println(integer1 == integer2);  // outputs "false"
Run Code Online (Sandbox Code Playgroud)

为什么包装器对象仅在值127内共享同一实例?

java caching integer

40
推荐指数
3
解决办法
5824
查看次数

为什么某些Integer对象的== true?

可能重复:
整数包装器对象仅在值127内共享相同的实例?

我从Khalid Mughal SCJP复制了以下程序片段,但我无法
理解输出.

 public class RQ200_60 {
    public static void main(String[] args) {
        Integer i = -10;
        Integer j = -10;
        System.out.print(i==j);         // output: true -- why true?
        System.out.print(i.equals(j));  // output: true
        Integer n = 128;
        Integer m = 128;
        System.out.print(n==m);         // output: false
        System.out.print(n.equals(m));  // output: true
    }
}      
Run Code Online (Sandbox Code Playgroud)

上面的程序为第一个print语句提供了true,但它应该给出false,因为它是与==关系运算符的引用比较.但第三次打印给出了错误,我不明白这种不一致.

非常感谢您的解释!

java integer

19
推荐指数
3
解决办法
1199
查看次数

整数包装类和==运算符 - 指定的行为在哪里?

Integer integer1 = 127;
Integer integer2 = 127;
System.out.println(integer1 == integer2);//true

integer1 = 128;
integer2 = 128;
System.out.println(integer1 == integer2);//false
Run Code Online (Sandbox Code Playgroud)

我发现它返回==(如果是)在范围之内-128 - 127,为什么会有这样的规范?

java comparison boxing unboxing

9
推荐指数
1
解决办法
7216
查看次数

= =如何比较内存位置?

我被告知从不使用==字符串而是用于其他所有内容,因为它.equals会比较值而不是对象的实例.(我理解其中的区别).

根据一些网站,==比较内存位置?

我不明白的是,如果你将一个整数与另一个整数进行比较,为什么它会比较内存位置,还是仅仅用于字符串?

如果你将int 3与int 4进行比较,显然它不会在同一个内存位置,但是如果你将int 4与int 4进行比较,那是否意味着所有值为4的整数都存储在同一个内存中记忆位置?

java autoboxing equals

4
推荐指数
2
解决办法
5737
查看次数

标签 统计

java ×4

integer ×2

autoboxing ×1

boxing ×1

caching ×1

comparison ×1

equals ×1

unboxing ×1