zoukankan      html  css  js  c++  java
  • 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 .原理同上

  • 相关阅读:
    使用Let`s encrypt 免费的https 证书
    iOS使用Security.framework进行RSA 加密解密签名和验证签名
    java aes_cbc_256 加密解密
    iOS CommonCrypto 对称加密 AES ecb,cbc
    openssl lhash 数据结构哈希表
    openssl stack 数据结构栈基本操作
    openssl pem 生成公钥和私钥及文件
    openssl evp RSA 加密解密
    Mac OS键盘常用快捷键
    PHP JSON 数据编码和解码
  • 原文地址:https://www.cnblogs.com/tianxuwei/p/10509904.html
Copyright © 2011-2022 走看看