包装类的作用:
1、包装类是final修饰的,不能被继承。
2、包装类是不可变类,在构造包装类对象后,不允许更改包装在其中的值。
3、方便在基本数据类型与字符串之间进行转换。
4、可以更加便捷的对基本数据类型进行操作。
5、方便在集合中的存储。
基本数据类型与包装类的对应关系
byte | Byte |
---|---|
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
Java 5 增加了自动装箱、拆箱机制,提供基本数据类型和包装类型的相互转换操作
为什么这么设计
java 中 new 一个对象,会把这个对象存储在堆里面,所有的类都是 object 的子类,通过 stack 指向堆。 1.java 中的对象很多都是朝生夕死的,所以一直放在堆中不是很高效; 2.Java 是一个面相对象的编程语言,基本类型并不具有对象的性质,为了让基本类型也具有对象的特征,就出现了包装类型(如我们在使用集合类型 Collection 时就一定要使用包装类型而非基本类型),它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。
代码
public class Number {
public static void main(String[] args) {
Integer i1 = 10;
Integer i2 = 10;
Integer i3 = new Integer(10);
Integer i4 = new Integer(10);
System.out.println(i1 == i2);//true比较的是地址
System.out.println(i1 == i3);//false
System.out.println(i3 == i4);//false
System.out.println(i1.equals(i2));//true 比较的是地址
System.out.println(i1.equals(i3));//true
System.out.println(i3.equals(i4));//true
}
}
结果
true
false
false
true
true
true
不同
声明方式不同:基本类型不使用 new 关键字,而包装类型需要使用 new 关键字来在堆中分配存储空间;
存储方式及位置不同:基本类型是直接将变量值存储在栈中,而包装类型是将对象放在堆中,然后通过引用来使用;
初始值不同:基本类型的初始值如 int 为 0,boolean 为 false,而包装类型的初始值为 null ;
使用方式不同:基本类型直接赋值直接使用就好,而包装类型在集合如 Collection、Map 时会使用到。