包装类
什么是包装类
在基本数据类型的基础上增加属性、方法、构造器
将基本数据类型进行封装。然生了一个新的类——包装类
基本数据类型是一个数
包装类是一个类:引用数据类型
对应关系
基本数据类型 | 对应的包装类 | 继承关系 |
---|---|---|
byte | Byte | —>Number—>Object |
short | Short | —>Number—>Object |
int | Integer | —>Number—>Object |
long | Long | —>Number—>Object |
float | Float | —>Number—>Object |
double | Double | —>Number—>Object |
boolean | Boolean | Object |
char | Character | Object |
为什么要用包装类
以前学习装多个数据的是数组,可以放基本数据类型和引用数据类型
以后学习放数据的集合,只能放引用数据类型的数据
Integer
(1)java.lang
直接使用无需导包
(2)已实现的接口
(3)被final修饰的类不能被继承,所以Integer没有子类
属性
通过属性可以直接获得int的取值范围
public class Test {
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
}
}
构造器
Integer有两个有参构造器
一个可以把数字参数传给属性
一个可以把数字样式的字符串转换为int类型再传给属性
第2个构造器声明了一个异常 NumberFormatException,如果传进来的字符串无法转为int类型就会报错
包装类特有的机制:自动装箱、自动拆箱
public class Test {
public static void main(String[] args) {
//自动装箱:int——>Integer
Integer i1 = 12;
System.out.println(i1);
//自动拆箱 Integer——>int
Integer i2 = new Integer(18);
int i3 = i2;
System.out.println(i3);
}
}
自动装箱、自动拆箱:jdk1.5以后。作用:快速实现基本数据类型和包装类的类型转换。
转换也是通过函数实现的(Integer——>int(intValue),int——>Integer(valueOf))
方法
- 对象1.compareTo(对象2) 比较两个数字大小 返回值见代码
public static int compare(int x, int y) {
return (x < y) ? -1 : ((x == y) ? 0 : 1);
2.equals和 ==
对象1.equals(对象2)
Integer包装类重写了object中的equals方法,使从原本的比较地址变成了比较对象中的value值
2.2 自动装箱比较
Integer i3 = 13;
Integer i4 = 13;
System.out.println(i3==i4);
如果比较的数字在-128到127之间,可以访问到数组中的数字,此时比较的是数值。超过这个范围则返回封装的Integer对象,此时比较的是地址值。