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 = ;
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, );
// Maximum array size is Integer.MAX_VALUE
            h=min(i,0x7fffffff-128-1)的最小值
h = Math.min(i, Integer.MAX_VALUE - (-low) -);
} 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) + ];
      //low等于-128
int j = low;
for(int k = ; 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 >= ;
} 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
  

  

Java-IntegerCache的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. Java Integer中的IntegerCache小记

      同事今天给我发了一个关于Java拆装箱的ppt,里面有这么一段代码 Integer c = Integer.valueOf(3); Integer d = Integer.valueOf(3); ...

  3. Java Integer封装类的IntegerCache内部类

    个人理解,不喜勿喷,欢迎指正. 首先看下面这段代码,猜一下输出结果是什么 Integer a = 10; Integer b = 10; System.out.println(a == b); a = ...

  4. Java Integer常量池——IntegerCache内部类

    个人理解,不喜勿喷,欢迎指正. 首先看下面这段代码,猜一下输出结果是什么 Integer a = 10; Integer b = 10; System.out.println(a == b); a = ...

  5. java中易错点(一)

    由于replaceAll方法的第一个参数是一个正则表达式,而"."在正则表达式中表示任何字符,所以会把前面字符串的所有字符都替换成"/".如果想替换的只是&qu ...

  6. Core Java 总结(数据类型,表达式问题)

    2016-10-18 整理 写一个程序判断整数的奇偶 public static boolean isOdd(int i){ return i % 2 == 1; } 百度百科定义:奇数(英文:odd ...

  7. 编写高质量代码:改善Java程序的151个建议(第2章:基本类型___建议26~30)

    建议26:提防包装类型的null值 我们知道Java引入包装类型(Wrapper Types)是为了解决基本类型的实例化问题,以便让一个基本类型也能参与到面向对象的编程世界中.而在Java5中泛型更是 ...

  8. Java中2+2==5解读

    先来看一段程序,如下: package basic; import java.lang.reflect.Field; public class TestField { public static vo ...

  9. 【转】理解Java Integer的缓存策略

    本文将介绍 Java 中 Integer 缓存的相关知识.这是 Java 5 中引入的一个有助于节省内存.提高性能的特性.首先看一个使用 Integer 的示例代码,展示了 Integer 的缓存行为 ...

  10. java中Integer,String判断相等与integer的比较大小

    package sfk.bbs.test.springjsbctempletTest; import static org.junit.Assert.*; import org.junit.Test; ...

随机推荐

  1. LOJ2538. 「PKUWC2018」Slay the Spire【组合数学】

    LINK 思路 首先因为式子后面把方案数乘上了 所以其实只用输出所有方案的攻击力总和 然后很显然可以用强化牌就尽量用 因为每次强化至少把下面的牌翻一倍,肯定是更优的 然后就只有两种情况 强化牌数量少于 ...

  2. CentOS安装crontab 定时备份文件夹

    一. 编写脚本编写一个脚本文件,使脚本可以执行备份命令. 例如,将文件目录 /home/backups/balalala 备份到/home目录下,并压缩.1. 创建脚本命令格式: touch 路径/文 ...

  3. python type metaclass

    在python中一切皆对象, 所有类的鼻祖都是type, 也就是所有类都是通过type来创建. 传统创建类 class Foo(object): def __init__(self,name): se ...

  4. dockercompose up build fail

    docker https://auth.docker.io/token dial tcp lookup auth.docker.io i/o timeo Error response from dae ...

  5. GStreamer插件分类

    gst-plugins-base一套小而固定的插件,涵盖各种可能类型的elements; 这些在开发系列期间随着核心变化而不断更新.我们相信分销商可以安全地发行这些插件.人们编写插件应该将他们的代码基 ...

  6. 【MVC】Model的使用

    1,Model的职责: Model只负责与数据处理相关的工作. 2,开发Model的基本观念 采用ORM信息访问技术开发 ORM是将结构化的关系型数据,映射成面向对象模型.对于EF来说,就是关系型数据 ...

  7. C++和C#转换

    c#与C++类型转换,网摘2011-12-08 8:33//c++:HANDLE(void   *)          ----    c#:System.IntPtr       //c++:Byt ...

  8. Microsoft Dynamics CRM 2011 如何导入组织

    一.首先备份数据库,还原数据库(前面SQL server 2008数据库的备份与还原(转)已经说明),这里就不说明了. 二.怎么删除组织? 先要在组织管理器里禁用组织,然后删除组织,再从数据库里删除. ...

  9. 【python】class之super关键字的作用

    在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A: def __init__(self):    prin ...

  10. Django的 admin管理工具

    admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTALLE ...