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
      
    

      

  • 相关阅读:
    strstr 函数的实现
    函数模板与模板函数
    内核态和用户态
    最短路径算法(跟新SPFA,Ford)
    P1042 乒乓球
    P2347 砝码称重
    P1087 FBI树
    P1540 机器翻译
    P1028 数的计算
    P1067 多项式输出
  • 原文地址:https://www.cnblogs.com/shuiyonglewodezzzzz/p/6901756.html
Copyright © 2011-2022 走看看