简单剖析Java中的装箱和拆箱
Kang Lv3

前言

在 Java 的设计中提倡一种思想,即一切皆对象。于是 Java 将基本数据类型封装成对象,每种基本数据类型分别设计了对应的类,称之为包装类(Wrapper Classes)。

基本数据类型 包装类
byte Byte
short Short
int Integer
long Long
char Character
float Float
double Double
boolean Boolean

将基本数据类型封装成对象就可以在对象中定义更多的功能方法操作

拆箱与装箱

那什么是拆箱?什么是装箱呢?

  • 装箱:把基本数据类型转换为对应的包装类类型
  • 拆箱:把包装类类型转换成对应的基本数据类型

Java 1.5 版本之后可以自动拆箱装箱,也就是在进行基本数据类型和对应的包装类转换时,系统将自动进行装箱及拆箱操作,不用在进行手工操作,为开发者提供了更多的方便。例如:

1
2
Integer obj = 123; // 自动装箱
int i = obj; // 自动拆箱

自动装箱,相当于Java编译器替我们执行了 Integer.valueOf(XXX);
自动拆箱,相当于Java编译器替我们执行了 Integer.intValue(XXX);

包装类的应用

int和Integer相互转换

1
2
Integer obj = new Integer(50); // 手动装箱
int n = obj.intValue(); // 手动拆箱

数值类型转为字符串类型

1
2
3
4
5
6
7
// int -> string
int number = 10;
String s1 = "" + number;

String s2 = String.valueOf(number);

String s3 = Integer.toString(number);

字符串转为数值类型

1
2
3
4
5
6
// string -> int
String s = "10";
Integer i = Integer.valueOf(s);
int x1 = i.intValue();

int x2 = Integer.parseInt(s);
  • 本文标题:简单剖析Java中的装箱和拆箱
  • 本文作者:Kang
  • 创建时间:2021-02-19 20:28:28
  • 本文链接:ykhou.github.io2021/02/19/简单剖析Java中的装箱和拆箱/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!