zoukankan      html  css  js  c++  java
  • Java-IntegerCache

    Integer类里面有一个私有的静态内部类IntegerCache类加载时,有一段静态块代码,如下

            static final int low = -128;
            static final int high;
            static final Integer cache[];
    static {
                // high value may be configured by property
                int h = 127;
                String integerCacheHighPropValue =
                    sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");
                if (integerCacheHighPropValue != null) {
                    try {
                        int i = parseInt(integerCacheHighPropValue);
                //如果配置了IntegerCache的长度,取它和127的最大值 i
    = Math.max(i, 127); // Maximum array size is Integer.MAX_VALUE
                h=min(i,0x7fffffff-128-1)的最小值 h = Math.min(i, Integer.MAX_VALUE - (-low) -1); } catch( NumberFormatException nfe) { // If the property cannot be parsed into an int, ignore it. } }
           //赋值给high high
    = h;        //如果没配置,127-(-128)+1=256
           //-128到0//129个元素
           //1到127//127个元素
    cache
    = new Integer[(high - low) + 1];
          //low等于-128
    int j = low; for(int k = 0; k < cache.length; k++) cache[k] = new Integer(j++);
            //-128,127的数一定在cache数组里面,
    // range [-128, 127] must be interned (JLS7 5.1.7) assert IntegerCache.high >= 127; } private IntegerCache() {}

    Integer的valueOf方法

        public static Integer valueOf(int i) {
          //默认情况下i>=-128&&i<=127,返回cache数组里面的东西 if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }

      那么通过设置

    java.lang.Integer.IntegerCache.high
    可以调大IntegerCache的缓存数字咯.


    	int q = 10;
    	q = (q << 6) + (q << 5) + (q << 2);//q=1000
    getChars方法里面,这个段代码,把q的值乘以100
      
    

      

  • 相关阅读:
    Spring核心概念
    机器学习第二次作业
    机器学习第一次作业
    软工实践个人总结
    第04组 Beta版本演示
    第04组 Beta冲刺(5/5)
    第04组 Beta冲刺(4/5)
    第04组 Beta冲刺(3/5)
    第04组 Beta冲刺(2/5)
    第04组 Beta冲刺(1/5)
  • 原文地址:https://www.cnblogs.com/shuiyonglewodezzzzz/p/6901756.html
Copyright © 2011-2022 走看看