Java从入门到放弃 · 浅谈包装类

142 阅读2分钟

“这是我参与8月更文挑战的第19天,活动详情查看: 8月更文挑战

包装类

概述

基本数据类型使用起来非常方便,但是没有相应的方法来操作这些数据,所以我们使用一个类,把基本数据类型和这些操作基本数据类型的方法包起来放到一个箱子中。这就有了装箱和拆箱的概念。(下面说)

我们知道java中有八种基本数据类型,所有我们有八个包装类,分别对应八种基本数据类型。

基本数据类型包装类(位于java.lang包)
byteByte
shortShort
intInteger
longLong
folatFloat
doubleDouble
charCharacter
booleanBoolean

除了两个特殊的我们需要记忆,剩下的都是基本数据类型的首字母大写即可。

装箱和拆箱。

这里我们就以Integer类来举例说明,其他包装类类似。

装箱

把基本类型的数据,包装到包装类中。(基本数据类行 -> 包装类)

可以通过以下方法实现。

构造方法

Integer(int value)        构造一个新分配的 Integer 对象,它表示指定的 int  值。

Integer(String s)        构造一个新分配的 Integer 对象,它表示 String 参数所指示的  int 值。

这里需要注意的是,虽然第二个构造方法是String类型的参数,但是传入的值是类似:“100”,“22”这种的字符串,如果是:“a”这种的字符串,会报异常。

NumberFormatException - 如果 String 不包含可解析的整数。

Integer in1 = new Integer(1);
System.out.println(in1);//重写了toString方法
Integer in2 = new Integer("1");
System.out.println(in2);
Integer in3 = new Integer("a");//报异常NumberFormatException
System.out.println(in3);

image.png

静态方法

static Integer	valueOf(int i)        返回一个表示指定的 int 值的 Integer 实例。

static Integer	valueOf(String s)        返回保存指定的 String 的值的 Integer 对象。
Integer in4 = Integer.valueOf(1);
System.out.println(in4);
Integer in5 = Integer.valueOf("1");
System.out.println(in5);

image.png

拆箱

在包装类中去除基本类型的数据(包装类 -> 基本数据类型)

通过成员方法实现

成员方法

int intValue()        以 int 类型返回该 Integer 的值。
int i = in1.intValue();
System.out.println(i);

image.png

自动装箱和自动拆箱

在JDK1.5开始,基本类型与包装类的装箱和拆箱动作可以自动完成。

自动装箱

直接把基本类型的值赋给包装类。

Integer in = 1 相当于 Integer in = new Integer(1)

自动拆箱

将包装类自动转换为几倍类型的数据从而参与运算。

in = in + 2

来分析一下这个语句。

in + 2相当于in.intValue() + 2 = 3

in = in + 2,赋值时相当于 Integer(3)

写在最后

关于包装类,其中的拆箱与装箱咱们就学习到这里,如有不正之处,欢迎掘友们批评指正!