java 8 Integer 内部类 内部类预初始化从-128~127的Integer实例,每个具体实例的下标为i + (-IntegerCache.low),比如-128下标为-128-(-128)=0,再看一下自动装箱的函数valueOf 到这里我们上面的类的结果已经很明显一、将在main函数内 ...
分类:
其他好文 时间:
2018-09-03 13:48:40
阅读次数:
176
1.所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较。 说明:对于 Integer var = ? 在-128 至 127 范围内的赋值,Integer 对象是在 IntegerCache.cache 产生, 会复用已有对象,这个区间内的 Integer 值可以直接使用==进 ...
分类:
编程语言 时间:
2018-08-15 16:01:23
阅读次数:
167
学习前我们先看一个笔者之前项目踩过的坑 看到这个结果,有些人可能比较惊讶,我也很惊讶,还中过大招,这都是源码看的不仔细的结果 还是直接上截图: 这是Integer类的源码片段,翻译一下注释:该内部静态类在虚拟机初始化时会设置并保存IntegerCache.high值,默认是127 然后会将-128~ ...
分类:
其他好文 时间:
2018-08-04 17:23:22
阅读次数:
225
== 比较 Integer 大小 首先Integer n1 = 127; 这种赋值方式,是会进行装箱操作的; 下面我们看一下源码 本质是因为 Integer 内部维护了一个IntegerCache, 128 到 127 是byte的取值范围,如果在这个取值范围内,自动装箱就不会创建对象,而是从常量池 ...
分类:
其他好文 时间:
2018-06-18 18:23:30
阅读次数:
178
对Integer类中的私有IntegerCache缓存类的一点记录 ...
分类:
系统相关 时间:
2018-06-10 15:29:29
阅读次数:
217
一. Integer 1.引子 在开始之前,我还是需要吐槽下自己,我是真的很菜! 他问: 两个Integer对象==比较是否相等? 我答:对象==比较,是引用比较,不相等! 他问:IntegerCache这个用来干什么? 我答:......,我不是很清楚!!! 从这里可以看出,我是真的很水!! 基于 ...
分类:
编程语言 时间:
2018-05-11 14:30:56
阅读次数:
188
一、关于Integer 首先补充下昨天的 intValue()方法 :以 int 类型返回该 Integer 的值。 Integer方法,在其内部类IntegerCache中缓存了-128到127之间的整数,所有如果是这期间的数,系统不会重新new一个Integer,也就是说两个Integer引用变 ...
分类:
其他好文 时间:
2018-03-10 11:53:40
阅读次数:
166
在-128 至 127 范围内的赋值,Integer 对象是在IntegerCache.cache 产生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行 判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑, 推荐使用 equals 方法进行判断。 ...
分类:
编程语言 时间:
2018-01-24 15:30:13
阅读次数:
113
一个很有趣的现象,下面这两个结果输出的结果是false true,这是为什么? 翻看Integer的源码可以看到,当new Integer(12);时,没有什么特别的,就是通过构造方法创建了一个Integer的对象,并将12赋值给对象的变量value。因此a!=b是正常的。而上面c==d是true就 ...
分类:
系统相关 时间:
2017-10-10 00:12:46
阅读次数:
204
今天做了一道题目题目如下: 请说出输出: 答案为:true,false 是不是很奇怪? 翻源码去哈哈; 查看Integer.value(int i)方法 查看内部类 可以看到还是可以设置jvm的参数的java.lang.Integer.IntegerCache.high来设置这个最大或者最小缓存区, ...
分类:
编程语言 时间:
2017-09-28 20:41:03
阅读次数:
263