Java中的包装器类

时间:2020-01-09 10:34:49  来源:igfitidea点击:

Java中的包装器类是其对象包装原始类型的类。当我们需要一个对象而不是原始类型时,可以使用Wrapper类将原始类型值包装在一个对象中并使用该对象。

什么时候需要Java包装器类

下面列出了一些可能需要Wrapper类的方案。

  • 如果我们有任何将对象作为参数的方法。
  • 如果要将原始类型存储在只能保存对象的任何数据结构中,例如,如果我们有一个对象数组(Object [] arr)或者任何只能存储对象的Java Collections类(List <Integer> numberList) 。
  • 如果将原始类型包装到Wrapper类中,则Wrapper类还具有许多其他实用程序方法和字段。例如,我们可以使用Wrapper类的常量字段MIN_VALUE和MAX_VALUE来获取数据类型的上限和下限。我们还可以使用在其他原始类型之间进行值转换,在字符串之间进行转换以及在数字系统之间进行转换的方法。

Java中用于原始类型的包装器类

对于所有八种原始数据类型,Java中都有一个对应的Wrapper类。

原始类型包装器类
booleanBoolean
charCharacter
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble

在这8个包装器类中,有6个是数字的。所有数字包装器类都是抽象类Number的子类。

使用Wrapper类的方法进行转换

尽管自动装箱和取消装箱(Java 5及更高版本)可以自动将原语转换为对象并将对象转换为原语,但是如果要将值与其他原语类型相互转换,则仍可以使用包装器类的方法。

Java包装器类示例

1将int转换为String

int i = 22;
// Converting to String
String str = Integer.toString(i);

2在Java中将double转换为int

Double d = 147.89d;
int val = d.intValue();
System.out.println("Converted int value- " + val);

3在Java中将float转换为double

Float f = 147.89f;
double val = f.doubleValue();
System.out.println("Converted double value- " + val);

4将char包装到Character Wrapper类中。请注意,Java 8之后不推荐使用所有Wrapper类的此类构造函数。

Character c = new Character('a');

自动装箱和拆箱

将原始类型自动转换为其对应的Wrapper类的过程称为自动装箱。我们不需要自动进行转换。

例如,直接将int值分配给Integer对象。转换自动发生。

Integer i = 10; // primitive int value 10 converted to Integer

将int值添加到存储Integer对象的ArrayList中。自动装箱会自动将int值包装到Integer对象,然后将其存储到List中。

List<Integer> numList = new ArrayList<Integer>();
numList.add(10);

通过拆箱,可以将Wrapper类对象自动转换为相应的原始类型。

例如,当检索存储在列表中的整数时,我们可以将其分配给Integer或者int。在这种情况下,从整数(包装类)到整数的转换是自动完成的。

List<Integer> numList = new ArrayList<Integer>();
numList.add(10);

Integer num = numList.get(0);
System.out.println("num- " + num);
// value as int - unboxing
int i = numList.get(0);
System.out.println("num- " + i);