先看一段测试结果: JDK的源码如下: 发现里面另有玄机,多了个IntegerCache类: 原来Integer把-128到127(可调)的整数都提前实例化了。 这就解释了答案,原来你不管创建多少个这个范围内的Integer用ValueOf出来的都是同一个对象。 但是为什么JDK要这么多此一举呢? ...
分类:
系统相关 时间:
2017-09-09 18:07:37
阅读次数:
141
猜一下下面代码的结果,是true true true 还是false false false? Integer a = 10; Integer b = 10; System.out.println(a.equals(b)); a = 100; b = ... ...
分类:
编程语言 时间:
2017-09-08 18:25:21
阅读次数:
184
//Integer 源码 private static class IntegerCache { static final int low = -128; static final int high; static final Integer cache[]; public static Integ ...
分类:
其他好文 时间:
2017-09-04 11:01:05
阅读次数:
161
今天看了一下Integer的源码: 在虚拟器启动后Integer提前将-128--127的整数都实例化了,不管创建多少个Integer.valueOf出来的都是同一个对象。 测试: ...
分类:
系统相关 时间:
2017-06-28 10:52:47
阅读次数:
154
观察下面代码,输出结果是什么? 运行一次,答案与预想的完全不一样。在比较数字的时候,一定要用euqals,不能用==c 查看Integer的jdk源码,发现如下片段: 这儿的IntegerCache有一个静态的Integer数组,在类加载时就将-128 到 127 的Integer对象创建了,并保存 ...
分类:
编程语言 时间:
2017-02-10 01:47:32
阅读次数:
158
先看代码实例现象: 问题:为什么都是比较数值,第一个为true,第二个确为false呢? 查找源码(java.lang.Integer),看到如下代码: 原来是因为Integer类型使用了缓存机制,即默认在JVM启动的时候设定了[-127~128]范围内的int包装类,这样在实际使用并在范围内的时候 ...
分类:
系统相关 时间:
2016-12-23 01:21:03
阅读次数:
223
同事今天给我发了一个关于Java拆装箱的ppt,里面有这么一段代码 Integer c = Integer.valueOf(3); Integer d = Integer.valueOf(3); Integer e = Integer.valueOf(321); Integer f = Intege ...
分类:
编程语言 时间:
2016-04-14 17:47:21
阅读次数:
250
IntegerCache有静态成员变量cache,为一个拥有256个元素的数组。在IntegerCache中也对cache进行了初始化,即第i个元素是值为i-128的Integer 对象。而-128至127是最常用的Integer对象,这样的做法也在很大程度上提高了性能。也正因为如此,“Intege...
分类:
编程语言 时间:
2016-01-23 17:49:38
阅读次数:
171
IntegerCache是Integer的内部类,用来将-128——high之间的对象进行实例化private static class IntegerCache { static final int low = -128; //缓存下届,不可改变了,只有上届可以改变 static final in...
分类:
系统相关 时间:
2015-08-29 20:05:46
阅读次数:
195
Integer 中public static Integer valueOf(int i) { assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i <= IntegerCache.high) ret...
分类:
其他好文 时间:
2015-08-28 10:58:17
阅读次数:
145