包装类的概念
包装类就是将基本数据类型封装到类中。
包装类的产生原因:使用Object类接收一切东西。
(一)基本数据类型的包装类
- 数值型包装类(Number的直接子类)
数据类型 | 对应包装类 |
---|---|
byte | Byte |
int | Integer |
long | Long |
short | Short |
float | Float |
double | Double |
- 对象型包装类(Object的直接子类)
数据类型 | 包装类 |
---|---|
boolean | Boolean |
char | Character |
(二)装箱与拆箱
- 装箱
装箱:将基本数据类型变为包装类对象。利用每个包装类的构造方法实现。 - 拆箱
拆箱:将包装类中包装的基本数据类型取出。利用**Value();
//手工装箱
Integer a = new Integer(10);
//手工拆箱
int res = i.intValue();
System.out.println(res);
//自动装箱
Integer b = 10;
//自动拆箱
System.out.println(b);
注意:对于Integer var = ? 在[-128-127]的赋值,Integer对象在常量池产生,会覆用已有对象;这个区间外的所有数据,都在堆上产生,不会覆用已有对象。
Integer a1 = 10;
Integer a2 = 10;
a1 == a2 //true
Integer a3 = 128;
Integer a4 =128;
a3 == a4 //false
(三)什么时候使用int ,Integer
- [强制]所有POJO(简单java类,类中只有成员变量,构造方法,getter/setter方法)类属性必须使用包装类。
- [强制]RPC方法返回值和参数必须使用包装类。(远程方法调用)
- [推荐]所有的局部变量使用基本类型。
(四)包装类与字符串的转换
- String -> 基本数据类型
包装类.parse数据类型(str)
字符串->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)
2.1基本数据类型 -> String
1)“”+基本数据类型
2)调用String 类提供的 valueOf(基本类型),推荐—不产生垃圾空间。
//基本数据类型转换成字符串
//两种方法
String str1 = String.valueOf(10);
String str2 = ""+10;