平时发现的一些有意思的小知识

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。

以上是关于平时发现的一些有意思的小知识的主要内容,如果未能解决你的问题,请参考以下文章

一些有意思的小知识(持续更新?)

编程初级训练营复盘

Python平时代码的一些知识

拿不到想要的offer,只缘身在CV中,关于一些面试小知识

那些你可能还没发现的Sketch冷知识第一期

面试过程中,你知道这些小知识,将事半功倍