23.1.包装类的分类
- 针对八种基本数据类型相应的引用类型-包装类
- 有了类的特点,就可以调用类中的方法
基本数据类型 | 包装类 |
---|---|
boolean | Boolean |
char | Character |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
23.2.包装类和基本数据的转换
- 装箱:基本数据类型 -> 包装类型
- 拆箱:包装类型 -> 基本数据类型
jdk5前是手动装箱和拆箱
//手动装箱 int->Integer
int n1 = 100;
Integer integer = new Integer(n1);
Integer integer1 = Integer.valueOf(n1);
//手动拆箱
int i = integer.intValue();
jdk5后就可以自动装箱和自动拆箱
int n2 = 200;
//自动装箱 int->Integer
Integer interger = n2;//底层使用的是 Integer.valueOf(n2)
//自动拆箱 Integer->int
int n3 = integer;//底层仍然使用的是 intValue()方法
- 包装类 (Integer)->String
Integer i = 100;//自动装箱
//方式1
String str1 = i + "";
//方式2
String str2 = i.toString();
//方式3
String str3 = String.valueOf(i);
- String -> 包装类 (Integer)
String str4 = "12345";
Integer i2 = Integer.parseInt(str4);//使用自动装箱
Integer i3 = new Integer(str4);//构造器
23.3.案例研究:
Object obj = true? new Integer(1) : new Double(2.0);
System.out.println(obj);
输出为 1.0
三元运算符是一个整体,所以精度提升到double类型
Integer i = new Integer(1);
Integer j = new Integer(2);
System.out.println(i == j);
输出为 false
都 new 了一个新的空间
Integer m = 1;
Integer n = 1;
System.out.println(m == n);
Integer x = 128;
Integer y = 128;
System.out.println(x == y);
输出为 true false
根据源码知道 Integer 设定的范围为-128~127
,在这个范围内直接返回,否则就要new Integer(xx)
Integer m = 127;
int n = 127;
System.out.println(m == n);
Integer i = 128;
int j = 128;
System.out.println(i == j);
输出为 true true
只要有基本数据类型,判断的就是值是否相等