Java中基本类型的装箱和拆箱

步骤 1 : 封装类

所有的基本类型,都有对应的类类型

比如int对应的类是Integer

这种类就叫做封装类

package digit;

public class TestNumber {

    public static void main(String[] args) {
int i = 5; //把一个基本类型的变量,转换为Integer对象
Integer it = new Integer(i);
//把一个Integer对象,转换为一个基本类型的int
int i2 = it.intValue(); }
}

步骤 2 : Number类

数字封装类有

Byte,Short,Integer,Long,Float,Double

这些类都是抽象类Number的子类

Java自学-数字与字符串 装箱和拆箱-LMLPHP

package digit;

public class TestNumber {

    public static void main(String[] args) {
int i = 5; Integer it = new Integer(i);
//Integer是Number的子类,所以打印true
System.out.println(it instanceof Number);
}
}

步骤 3 : 基本类型转封装类

package digit;

public class TestNumber {

    public static void main(String[] args) {
int i = 5; //基本类型转换成封装类型
Integer it = new Integer(i); }
}

步骤 4 : 封装类转基本类型

package digit;

public class TestNumber {

    public static void main(String[] args) {
int i = 5; //基本类型转换成封装类型
Integer it = new Integer(i); //封装类型转换成基本类型
int i2 = it.intValue(); }
}

步骤 5 : 自动装箱

不需要调用构造方法,通过=符号自动把 基本类型 转换为 类类型 就叫装箱

package digit;

public class TestNumber {

    public static void main(String[] args) {
int i = 5; //基本类型转换成封装类型
Integer it = new Integer(i); //自动转换就叫装箱
Integer it2 = i; }
}

步骤 6 : 自动拆箱

不需要调用Integer的intValue方法,通过=就自动转换成int类型,就叫拆箱

package digit;

public class TestNumber {

    public static void main(String[] args) {
int i = 5; Integer it = new Integer(i); //封装类型转换成基本类型
int i2 = it.intValue(); //自动转换就叫拆箱
int i3 = it; }
}

步骤 7 : int的最大值,最小值

int的最大值可以通过其对应的封装类Integer.MAX_VALUE获取

package digit;

public class TestNumber {

    public static void main(String[] args) {

        //int的最大值
System.out.println(Integer.MAX_VALUE);
//int的最小值
System.out.println(Integer.MIN_VALUE); }
}

练习装箱拆箱

  1. 对byte,short,float,double进行自动拆箱和自动装箱

  2. byte和Integer之间能否进行自动拆箱和自动装箱

  3. 通过Byte获取byte的最大值

答案

package digit;

public class TestNumber {

    public static void main(String[] args) {
// 1. 对byte,short,float,double进行自动拆箱和自动装箱
byte b = 1;
short s = 2;
float f = 3.14f;
double d = 6.18; // 自动装箱
Byte b1 = b;
Short s1 = s;
Float f1 = f;
Double d1 = d;
// 自动拆箱
b = b1;
s = s1;
f = f1;
d = d1; // 2. byte和Integer之间能否进行自动拆箱和自动装箱
Integer i1 = b; //不能把byte直接自动装箱成Integer
b = new Integer(1); //也不能把Integer自动拆箱成 byte // 3. 通过Byte获取byte的最大值
System.out.println(Byte.MAX_VALUE); }
}
05-19 11:02