包装类
1.包装类
包装类(Wrapper):针对八种基本数据类型定义相应的引用类型
有了类的特点,就可以调用类的方法
| 基本数据类型 | 包装类 |
|---|---|
| boolean | Boolean |
| char | Character |
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
Byte、Short、Integer、Long、Float、Double的父类都是Number
1.1 包装类和基本数据类型的转换
-
在jdk5前的手动装箱和拆箱方式。
装箱:基本类型→包装类型;拆箱:包装类型→基本类型
-
在jdk5以后(含jdk5)的自动装箱和拆箱方式
-
自动装箱底层调用的是valueOf方法,如Integer.valueOf()
//演示int <--> Integer的装箱拆箱
//jdk5前
//手动装箱 int->Ingeter
int n1 = 100;
Integer integer = new Integer(n1);
Integer integer1 = Integer.valueOf(n1);
//手动拆箱 Ingeter->int
Integer j = new Integer(99);
int i = j.intValue();
//jdk5后,就可以自动拆装箱
int n2 = 200;
//自动装箱 int->Ingeter
Integer integer2 = n2; //底层使用的是Integer.valueOf(n2)
//自动拆箱 Ingeter->int
int n3 = integer2; //底层使用的是intValue()
小测试:输出结果是什么?
Object obj1 = true?new Integer(1):new Double(2.0);
Systen.out.println(obj1);
因为三元运算符要是视为一个整体,double提高优先级
输出1.0,而不是1
1.2 包装类和String类型的转换
//以Integer和String为例
//包装类 -> String
Integer i = 100;
//方式1
String str1 = i + "";
//方式2
String str2 = i.toString();
//方式3
String srt3 = String.valueOf(i);
//String -> 包装类
String str4 = "12345";
//方法1
Integer i2 = Integer.parseInt(str4);//使用到自动装箱
//方法2
Integer i3 = new Integer(str4);//构造器
1.3 包装类常用方法
Integer类和Character类的常用方法
输出结果是什么?
public void method1(){
Integer i = new Ingeter(1);
Integer j = new Ingeter(1);
System.out.println(i == j); //false,两个new出来的对象不相等
Integer m = 1; //底层Integer.valueOf(1)
Integer n = 1; // 所以这里主要看范围,-128~127就直接返回,否则new Ingeter()
System.out.println(m == n); //true
Integer x = 128;
Integer y = 128;//底层Integer.valueOf(128)
System.out.println(x == y); //false,128属于new Ingeter()
}
Integer i = 127;
int j = 127;
System.out.println(i == j);//true,只要有基本数据类型,判断的是值是否相等

浙公网安备 33010602011771号