不要做一个任人宰割的绵羊,需要自己强大起来。加油!!!
1、装箱
通俗的说就是将基本类型转换成包装类 int-------Integer
2、拆箱
大白话:就是将包装类转换成基本类型
装箱:
Integet会调用一个Valueof(); 进行装箱 源码
public static Integer valueOf(int i) { if(i >= -128 && i <= IntegerCache.high) return IntegerCache.cache[i + 128]; else return new Integer(i); }
当我们是数组是-128----127之内,那么就会去IntegerCache里面取数,否则就去新建一个对象
当然不同数据类型里面的valueof也不一样
Integer、Short、Byte、Character、Long这几个类的valueOf方法的实现是类似的。 这是一类,因为它们的数据个数是有限的
Double、Float的valueOf方法的实现是类似的。 这又是一类,因为他们的数据个数是无限的,。
深度说一下Boolean
首先他的TRUE、FALSE 这是两个静态的常量
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
拆箱
他是调用intValue方法
两个Integer类型的数据进行比较的话
有两种情况 1、 a == b 这样是比较的对象是不是相等 2、 c == a + b 当有操作符的时候就会进行一个拆箱,将Integer类型转换成int 类型。
谈谈Integer i = new Integer(xxx)和Integer i =xxx;这两种方式的区别。
1、前面这种不会触发装箱 , 后面这种直接触发装箱
2、一般情况下后面这种要比前面那种效率快。