相关疑难解决方法(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 autobox int for Integer for .equals(Object)方法?

我正在研究一些java类,并且重写了.equals(Object)测试我的类的整数变量的方法,当它发出错误说我无法使用原始类型int时,我很惊讶,当我确定它在java文档中说编译器会自动将原始类型自动放映到方法的包装类型中.

public boolean equals(Object o)
{
    if (!(o instanceof myClass))
        return false;
    myClass mc = (myClass)o;
    return (this.myInt.equals(mc.getMyInt()));
}
Run Code Online (Sandbox Code Playgroud)

java autoboxing

4
推荐指数
1
解决办法
584
查看次数

标签 统计

autoboxing ×2

java ×2