java.内存中的 int 和 Integer 类型

1.int 类型赋值给一个整数值,不管大小,都是在常量池中查找,如果有,返回引用,如果没有,创建再返回引用
2.Integer 类型赋值给一个整数值,
(1) -128 到 127 范围内的值都是先再常量池中查找,如果有,直接返回这个引用,如果没有,则再常量池中创建,再返回这个引用。‘
(2) 如果超出这个范围,则再堆里创建一个 Integer 对象,对象的属性 value 指向常量池中的常量,
3. Integer 和 int 类型进行比较的时候,会将 Integer 类型进行自动拆箱,实际上是 Integer 中的 value 属性和 int 的比较,所以不管是否在 -128到 127 范围之内,只要值相等就相等
4. Integer 和 Integer 类型在比较时候,要看这两个 Integer 是指向的常量池的对象,还是堆中的对象,所以只要有一个是通过 new Integer() 的方式赋值的,因为 new Integer() 方式赋值说明是在堆中创建对象,那就肯定不相等。而如果都是使用常量赋值的,如 Integer i = 10, 因为在 -128到127范围内,都是指向常量池对象,所以相等,如果超出这个范围,就不相等

示例:

package lesson3;

public class StringInMemory {
    public static void main(String[] args) {
        Integer i1 = 100;
        Integer i2 = new Integer(100);
        System.out.println(i1 == i2);// false

        Integer i3 = 100;
        Integer i4 = 100;
        System.out.println(i3 == i4);// true

        Integer i5 = 10000;
        Integer i6 = 10000;
        System.out.println(i5 == i6);// false

        int i7 = 10000;
        Integer i8 = 10000;
        System.out.println(i7 == i8);// true
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值