zoukankan      html  css  js  c++  java
  • Java Integer常量池

    public class IntegerExample {  
       public static void main(String[] javalatte) {  
          Integer i = 10;  
          Integer j = new Integer(10);  
          Integer k = 130;  
          Integer p = new Integer(130);  
       }  
    }  

    将上面的类编译后再反编译得到如下的类:

    public class IntegerExample {  
       public static void main(String[] javalatte) {  
          Integer i = Integer.valueOf(10);  
          Integer j = new Integer(10);  
          Integer k = Integer.valueOf(130);  
          Integer p = new Integer(130);  
       }  
    }  

    即当我们用Integer i = 10 创建Integer类的实例时,其实是调用了Integer.valueOf()方法;

    从JDK源码中我们可以看到:

    public static Integer valueOf(int i) {
        assert IntegerCache.high >= 127;
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }

    当我们在[-128,127]里调用valueOf()时,实际上使用的是IntegerCache(缓存)里的值,如果用超出此范围的值给封装类赋值时,Integer.valueOf()会返回new Integer()实例。

  • 相关阅读:
    js模块化历程
    夜深
    出差(六)开会
    高情商的十大典型表现
    出差(五)调整
    HighCharts简单应用
    出差(四)适应
    出差(三)尝试
    出差(二)熟悉
    ZTree简单应用
  • 原文地址:https://www.cnblogs.com/lxcmyf/p/6404523.html
Copyright © 2011-2022 走看看