目录
为什么设置方法的返回值类型以及形参类型时经常使用的是Integer而不是int?
java八大包装类
包装类的基本概念
-
基本数据类
-
Java中的基本数据类型不是面向对象的,它们只是纯粹的数据,除了数值本身的信息之外,基本类型数据不带有其他信息或者可操作方法。
-
-
包装类
-
为了方便操作基本数据类型值,将其封装成了对象,在对象中定义了属性和行为丰富了该数据的操作。用于描述该对象的类就称为基本数据类型对象包装类。
-
包装类的分类
-
针对八大基本数据类型定义相应的引用类型---包装类
-
有了类的特点,就可以调用类的方法。
基本数据类型 | 包装类 | 包装类的直接父类 |
---|---|---|
boolean | Boolean | Object |
char | Character | |
byte | Byte | Number |
short | Short | |
int | Integer | |
long | Long | |
float | Float | |
double | Double |
包装类和基本数据类型的转换
-
装箱:基本类型 -> 包装类型;拆箱:包装类型 -> 基本类型
-
jdk5之前,需要手动装箱和拆箱
-
jdk5以后(含jdk5)是自动装箱和拆箱
-
自动装箱底层调用的是valueOf方法,比如Integer.valueOf()
-
自动拆箱底层调用的是intValue方法,比如Integer.intValue()
案例:jdk5之前,需要手动装箱和拆箱
public class Integer01 {
public static void main(String[] args) {
int n1 = 100;
//两种手动装箱方式,int->Integer
Integer integer = new Integer(n1);
Integer integer1 = Integer.valueOf(n1);
//手动拆箱,Integer->int
int i = integer.intValue();
}
}
案例:jdk5之后,就可以自动装箱和拆箱
public class Integer01 {
public static void main(String[] args) {
int n2 = 101;
//自动装箱,int->Integer
Integer integer2 = n2;
//自动拆箱,Integer->int
int n3 = integer2;
}
}
包装类测试题
1.下面的代码是否正确,为什么?
Double d = 100d; //正确,自动装箱 Double.value(100d);
Float f = 1.5f; //正确,自动装箱 Double.value(1.5f);
2.如下代码的输出结果?
-
三元运算符是一个整体,精度最高的是Double,所以是1.0
public class Integer01 {
public static void main(String[] args) {
Object obj = true?new Integer(1):new Double(2.0);
System.out.println(obj);
}
}
3.如下代码的输出结果?
-
两条语句是分别计算的,是独立的,所以是1
public class Integer01 {
public static void main(String[] args) {
Object obj2; //局部变量必须初始化后才能被使用
if (true) {
//相当于对obj2变量初始化,否则不能输出obj2
obj2 = new Integer(1);
}else {
obj2 = new Double(2.0);
}
System.out.println(obj2);
}
}
常用的方法
- Integer.parseInt(String s):将 String 类型转换成 int 类型
- Boolean.parseBoolean(String s):将 String 类型转换成 Boolean 类型
- Byte.parseByte(String s):将 String 类型转换成 Byte 类型
- Short.parseShort(String s):将 String 类型转换成 Short 类型
- Long.parseLong(String s):将 String 类型转换成 Long 类型
- Float.parseFloat(String s):将 String 类型转换成 Float 类型
- Double.parseDouble(String s):将 String 类型转换成 Double 类型
为什么设置方法的返回值类型以及形参类型时经常使用的是Integer而不是int?
- 原因:当我们使用 Integer 去接收数据时是可以接收到 null 值的,这样就可以避免出现空指针异常。