public static void main(String[] args) { Integer i = 200; Integer j = 200; System.out.println(i == j); //false System.out.println(200 == i); //true }
i == j 为false我知道,但为什么 200 == i会为true呢?
Integer不是只cache[-128 ~ 127]的数字吗
求解惑
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
所谓的cache是指整数值在范围 [-128 ~ 127]内会装箱成同一个对象,超出范围就new一个对象,这和200==i的比较没什么关系,i会像一楼说的自动拆箱成200.######
200 == i ,Java 会对 i 进行自动的拆箱,相当于在这个表达式里 i 就会自动转成数字 200