- 包装类就是将基本数据类型封装到类中。
- 包装类的产生原因:使用Object类接收一切东西。
(一)基本数据类型的包装类
- 数值型包装类(Number的直接子类)
数据类型 | 对应包装类 |
---|---|
byte | Byte |
int | Integer |
long | Long |
short | Short |
float | Float |
double | Double |
- 对象型包装类(Object的直接子类)
数据类型 | 包装类 |
---|---|
boolean | Boolean |
char | Character |
(二)装箱与拆箱
- 装箱
装箱:将基本数据类型变为包装类对象。利用每个包装类的构造方法实现。 - 拆箱
拆箱:将包装类中包装的基本数据类型取出。利用**Value();
//手工装箱
Integer i = new Integer(10);
//手工拆箱
int res = i.intValue();
System.out.println(res);
//JDK1.5之后,可直接进行拆装箱
//自动装箱
Integer i2 = 10;
//自动拆箱
System.out.println(i2);
注意:对于Integer var = ? 在[-128-127]的赋值,Integer对象在常量池产生,会覆用已有对象;这个区间外的所有数据,都在堆上产生,不会覆用已有对象。
Integer i1 = 10;
Integer i2 = 10;
i1 == i2 //true
Integer i3 = 400;
Integer i4 =400;
i3 == i4 //false
(三)什么时候使用int ,Integer
- [强制]所有POJO(简单java类,类中只有成员变量,构造方法,getter/setter方法)类属性必须使用包装类。
- [强制]RPC方法返回值和参数必须使用包装类。(远程方法调用)
- [推荐]所有的局部变量使用基本类型。
(四)包装类与字符串的转换
- String -> 基本数据类型
包装类.parse数据类型(str)
除了转换为boolean 不会产生NumberFormatException异常,转换成其他数据类型均有可能产生NumberFormatException异常。
原因:若要转换成int类型,则字符串中只能有int型数字,不能有其他内容,否则产生NumberFormatException异常。
字符串->int型 | public static int parseInt(String s) throws NumberFormatException |
字符串->double型 | public static int parseDoublet(String s) throws NumberFormatException |
字符串->int型 | public static int parseBoolean(String s) |
- 基本数据类型 -> String
1)“”+基本数据类型
2)调用String 类提供的 valueOf(基本类型),推荐—不产生垃圾空间。
//基本数据类型转换成字符串
//两种方法
String str2 = String.valueOf(10);
String str4 = ""+10;