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类。
原始类型 | 包装器类 |
---|---|
boolean | Boolean |
char | Character |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
在这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);