• Integer的缓存机制


    摘自:https://www.dutycode.com/xijie_baozhuanglei_huancun_jizhi_integer_huancun.html

    Integer的缓存机制: Integer是对小数据(-128~127)是有缓存的,再jvm初始化的时候,数据-128~127之间的数字便被缓存到了本地内存中,如果初始化-128~127之间的数字,会直接从内存中取出,不需要新建一个对象.

    public static void main(String[] args) {
    
        Integer num1 = new Integer(100);
        Integer num2 = new Integer(100);
        System.out.println("num1==num2 " + (num1 == num2));     
    
        Integer num3 = 100;
        Integer num4 = 100;
        System.out.println("num3==num4 " +(num3 == num4));
    
        Integer num5 = 128;
        Integer num6 = 128;
        System.out.println("num5==num6 " + (num5 == num6));     
    
        Integer num7 = 100;
        Integer num8 = new Integer(100);
        System.out.println("num7==num8 " + (num7 == num8));     
    
        int num9 = 100;
        Integer num10 = new Integer(100);
        Integer num11 = 100;
        System.out.println("num9==num10 " + (num9 == num10));
        System.out.println("num9==num11 " + (num9 == num11));
    }
    
    
    //运行之后的输出结果是:
    
    //num1==num2  false
    //num3==num4  true
    //num5==num6  false
    //num7==num8  false
    //num9==num10 true
    //num9==num11 true
    • num1==num2 false 
      num1和num2的内存地址不一样,==的左右操作数如果是对象的话,那么比较的是引用的地址,new产生的对象一定是新的内存地址,所以,这里和Integer的缓存机制无关的,最终的结果便是false

    • num3==num4 true 
      num3和num4的初始化方式,直接将数字赋值,等价于下面:

    Integer num3 = Integer.valueOf(100);

    Integer的缓存机制: Integer是对小数据(-128~127)是有缓存的,再jvm初始化的时候,数据-128~127之间的数字便被缓存到了本地内存中,如果初始化-128~127之间的数字,会直接从内存中取出,不需要新建一个对象. 
    所以,num3和num4实际上是引用的是一个内存地址,那么就是true了。

      • num5==num6 false 
        同上解析,128已经不在-128~127之间了,所以会new新对象,那么就是false

      • num7==num8 false 
        因为num8是new出来的,所以使用的内存地址和num7不一致,结果为false

      • num9==num10 true 
        num9的类型是int。Integer是int的包装类,在和int做比较的时候,会自动拆箱成int数值类型,所以,这里便变成了数字(int)的比较。

      • num9==num11 true 
        看清,num9 和 num11 .原理同上

  • 相关阅读:
    sourcetree删除github远程仓库文件
    怎样去掉wordpress中默认的未分类目录
    解决LNMP环境无法显示所有WordPress主题及无法编辑主题页面
    炫龙笔记本组合快捷键
    原版win10
    whmcs之全民idc
    putty登陆sourceforge.net(设置登录)
    putty登陆sourceforge.net(密钥的设置)
    当android studio一直显示gradle compile dependency
    android与后台请求的例子
  • 原文地址:https://www.cnblogs.com/tianxuwei/p/10509904.html
Copyright © 2020-2023  润新知