Integer
本文源码基于JDK8
Integer也是我们经常使用的工具类、包装类,此文主要用于记录学习笔记,主要从源码角度深入了解一下。
public final class Integer extends Number implements Comparable<Integer> {
// 2147483647
public static final int MIN_VALUE = 0x80000000;
// -2147483648
public static final int MAX_VALUE = 0x7fffffff;
// 获取基本类型int类型是class
public static final Class<Integer> TYPE = (Class<Integer>) Class.getPrimitiveClass("int");
}
说明:Integer.TYPE == int.class // true
- 继承Number类
Number类中只有构造方法和几个抽象方法:
构造方法
public Integer(int value) {
this.value = value;
}
public Integer(String s) throws NumberFormatException {
this.value = parseInt(s, 10);
}
自动装箱和自动拆箱
JDK1.5之后,java提供了自动装箱和自动拆箱的功能,下面从源码角度分析下Integer的装箱:
package com.quancheng;
public class ClassTest {
public static void main(String[] args) throws InterruptedException {
Integer num = 10;
}
}
通过javap -v ClassTest.class查看字节码,可以看出自动装箱实际是JVM编译器帮我们做的工作,调用的是I