整数包装类和 == 运算符 - 在哪里指定行为? [英] Integer wrapper class and == operator - where is behavior specified?

查看:32
本文介绍了整数包装类和 == 运算符 - 在哪里指定行为?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

integer1 = 128;
integer2 = 128;
System.out.println(integer1 == integer2);//false

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

I found it returns == (if it is) under the range of -128 - 127 , why is there such specification ?

推荐答案

因为Integer.valueOf(int):

public static Integer valueOf(int i) {
    if(i >= -128 && i <= IntegerCache.high)
        return IntegerCache.cache[i + 128];
    else
        return new Integer(i);
}

说明:

Integer integer1 = 127Integer integer1 = Integer.valueOf(127) 的快捷方式,对于 -128 和 127(含)之间的值,整数是放入缓存并多次返回,而更高和更低的数字每次都会生成新的整数.

Integer integer1 = 127 is a shortcut for Integer integer1 = Integer.valueOf(127), and for values between -128 and 127 (inclusive), the Integers are put in a cache and returned multiple times, while higher and lower numbers generate new Integers each time.

这篇关于整数包装类和 == 运算符 - 在哪里指定行为?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆