开发者社区 问答 正文

关于JAVA中Integer的==运算!:报错

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]的数字吗

求解惑

展开
收起
kun坤 2020-06-14 10:50:36 491 分享 版权
1 条回答
写回答
取消 提交回答
  • 所谓的cache是指整数值在范围 [-128 ~ 127]内会装箱成同一个对象,超出范围就new一个对象,这和200==i的比较没什么关系,i会像一楼说的自动拆箱成200.######

    200 == i  ,Java 会对 i 进行自动的拆箱,相当于在这个表达式里 i 就会自动转成数字 200

    2020-06-14 10:50:41
    赞同 展开评论
问答分类:
问答地址: