
JDK5之前,需要手动进行装箱拆箱。JDK5之后,自动进行装箱拆箱🎁
实例:
// 装箱和拆箱,JDK5之后,自动进行装箱拆箱
int n = 521;
// 自动装箱
// 底层使用的是Integer.valueOf的方式
Integer integer = n;
System.out.println(integer);
// 自动拆箱
// 底层依然是使用的intValue方法
int m = integer;
System.out.println(m);
----------------------------------
输出:
521
521
经典面试题:以下代码会输出什么信息?

要注意三元运算符是一个整体,所以以最高精度的Double输出结果,为
1.0
直接上代码:
// 包装类 --> String
Integer i = 1314;
// 方式1
String s = i + "";
System.out.println(s);
// 方式2
String s2 = i.toString();
System.out.println(s2);
// 方式3
String s3 = String.valueOf(i);
System.out.println(s3);
// String --> 包装类
String ss = "5211314";
Integer j = Integer.parseInt(ss);
System.out.println(j);
// 一些常用方法
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
System.out.println(Character.isDigit('a')); // 判断是否为数字
System.out.println(Character.isLetter('a')); // 判断是否为字母
System.out.println(Character.isUpperCase('a')); // 判断是否为大写
System.out.println(Character.isLowerCase('a')); // 判断是否为小写
现用现查即可🎈
经典面试题:(如下代码输出什么结果,Integer创建机制面试题)

False,因为i和j是两个不同的对象Integer.valueOf的方式Integer.valueOf的源码,该源码接受一个整形数据i,判断i是否在某一个范围内,在的话就在cache中返回数据,不在的话就新建一个Integer对象返回@IntrinsicCandidate
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
对于i所处的范围,上面的注解有详细的说明:
This method will always cache values in the range -128 to 127
java会事先创建好一个cache数组,用来缓存-128 - 127的数据,以提升访问效率👍
所以我们不难得出一个结论,当传入的数据范围在-128 to 127,则通过cache进行返回,否则将会new一个新的对象,故第二个输出为False
True