【两者之间的区别】
1. 定义不同,包装类是对象,基本数据类型不是
2. 初始值不同,包装类的初始值是null,而基本数据类型则是不同类型不一样
3. 声明和使用方式不同,包装类使用new
4. 存储位置不同,基本数据类型使用栈存储,包装类的引用也存储在栈中,但包装类的实例存储在堆里
【equals的使用】
基本数据类型和包装类用equal做比较时,会将基本数据类型自动装箱,如图1
图1【==的使用】
1. 基本数据类型和包装类用==做比较时,会将包装类自动拆箱
2. 两个包装类用==做比较时,比较的是对象的内存地址
3. 两个基本数据类型用==做比较时,比较的是值
【其他】
1. 包装类的valueof() 是用new方法来构建对象的
2. 包装类根据类型的不同有不同的缓存范围,有些没有缓存
图2如图2,第一个会相等是因为Integer的缓存范围是-128-127,所以两者会相等,第二个则因为超出了缓存范围,两个对象的内存地址不一样,所以不相等。
PS:1. Double类型没有缓存
2. 只有valueOf方法构造对象时会用到缓存,new方法等不会使用缓存!
网友评论