平时发现的一些有意思的小知识
Posted haoerlv
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了平时发现的一些有意思的小知识相关的知识,希望对你有一定的参考价值。
平时遇到的一些自己开始不懂,后来看了下原理,豁然开朗的问题:
1.
1 package day1226; 2 3 /** 4 * @author : hao 5 * @project : StudySjms 6 * @description : 7 * @time : 2018/12/26 15:54 8 */ 9 public class IntegerTest { 10 11 public static void main(String[] args) { 12 Integer i1 = 100; 13 Integer i2 = 100; 14 Integer i3 = 200; 15 Integer i4 = 200; 16 System.out.println(i1==i2); //true 17 System.out.println(i3==i4); //false 18 } 19 }
这是为什么呢? 开始我以为只是false就好了
这里面体现了 原生类型和包装类型的装箱和拆箱。
自动装箱的时候 实际上调用了Interger.valueOf(int) ,拆箱的时候用的是initValue(Integer)
1 public static Integer valueOf(int i) { 2 if(i >= -128 && i <= IntegerCache.high) 3 return IntegerCache.cache[i + 128]; 4 else 5 return new Integer(i); 6 }
可以发现如果值是-128-127范围内是返回缓存里的引用,如果不是新建一个对象,返回引用。所有上面200两个引用是两个对象的,所以false。
以上是关于平时发现的一些有意思的小知识的主要内容,如果未能解决你的问题,请参考以下文章