一、基本数据类型及其包装类
基本类型 | 对应的包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
PS. 数值型包装类继承于Number,字符型和布尔型继承于Object
二、常用方法
方法 | 说明 | 举例 |
---|---|---|
typeValue() | 生成对象基本值 | obj.intValue(); |
parseType(String str) | 将字符串转换成基本值 | Integer.parseInt(str); |
valueOf(String str) | 将字符串转换成基本值 | Integer.valueOf(str); |
toString() | 生成字符串表示法 | obj.toString(); |
hashCode() | 生成哈稀表代表 | obj.hashCode(); |
equals(obj) | 对同一个类的两个对象进行比较 | obj1.equals(obj2); |
PS.
-
例子中的obj是
Integer obj
-
包装类的构造方法可接收基本数据类型或字符串为参数
// 基本数据类型为参 Integer obj = new Integer(2); // 字符串为参 Integer objStr = new Integer("2");
-
parseType()与valueOf()方法的不同点在于,parseType()会直接返回数值,但valueOf()不同,它是先将字符串转换成包装类,再通过自动拆箱完成基本类型转换,也就是valueOf返回的是包装类对象。
三、装箱与拆箱
装箱:基本数据类型 => 包装类
// 自动装箱
Integer i2 = 2;
// 手动装箱
Integer integer2 = new Integer(2);
拆箱:包装类 => 基本数据类型
// 自动拆箱
int i = integer1;
// 手动拆箱
int i2 = integer2.intValue();
四、包装类对象的比较
public static void main(String[] args) {
Integer integer = 100;
Integer integer2 = 100;
Integer integer3 = 200;
Integer integer4 = 200;
System.out.println(integer == integer2); // output: true
System.out.println(integer3 == integer4); // output: flase
Double double1 = 100.0;
Double double2 = 100.0;
Double double3 = 200.0;
Double double4 = 200.0;
System.out.println(double1 == double2); // output: false
System.out.println(double3 == double4); // output: flase
Boolean boolean1 = true;
Boolean boolean2 = true;
System.out.println(boolean1 == boolean2); // output: true
}
结论:
- 如果是Integer对象,在[-128, 127]之间不会创建新Integer对象。
- 如果是Double对象,无影响,其对象引用均不相等。
- 如果是Boolean对象,无影响,其对象引用均相等。