相关疑难解决方法(0)

Java中奇怪的整数拳击

我刚刚看到类似这样的代码:

public class Scratch
{
    public static void main(String[] args)
    {
        Integer a = 1000, b = 1000;
        System.out.println(a == b);

        Integer c = 100, d = 100;
        System.out.println(c == d);
    }
}
Run Code Online (Sandbox Code Playgroud)

运行时,这段代码将打印出来:

false
true
Run Code Online (Sandbox Code Playgroud)

我理解为什么第一个是false:因为这两个对象是单独的对象,所以==比较引用.但我无法弄清楚,为什么第二个声明会回来true?当Integer的值在一定范围内时,是否会出现一些奇怪的自动装箱规则?这里发生了什么?

java autoboxing

108
推荐指数
5
解决办法
2万
查看次数

扩展java Integer缓存

有一般建议使用Integer.valueOf(int)而不是new Integer(int)因为缓存.

在JDK 5+中,你应该真正使用,valueOf因为Integer现在Integer-128和之间缓存对象,并且每次都127可以将同一Integer(0)对象交给你,而不是在一个全新的相同Integer对象上浪费对象构造.

如何扩大范围?

java boxing caching integer

3
推荐指数
1
解决办法
4031
查看次数

标签 统计

java ×2

autoboxing ×1

boxing ×1

caching ×1

integer ×1