本篇文章为你整理了java中的自动拆装箱与缓存(Java核心技术阅读笔记)(java 自动拆箱)的详细内容,包含有java的自动装箱和自动拆箱 java 自动拆箱 java中什么是自动装箱 java支持的数据类型有哪些,什么是自动拆装箱 java中的自动拆装箱与缓存(Java核心技术阅读笔记),希望能帮助你了解 java中的自动拆装箱与缓存(Java核心技术阅读笔记)。
最近在读《深入理解java核心技术》,对于里面比较重要的知识点做一个记录!
众所周知,Java是一个面向对象的语言,而java中的基本数据类型却不是面向对象的!为了解决这个问题,Java为每个基本数据类型引入一个对应的类,称为包装类!
byte -- Byte boolean -- Boolean short -- Short char -- Character
int -- Integer long -- Long float -- Float double -- Double
为什么需要包装类?
因为java是面向对象的语言,很多地方需要使用对象而不是基本数据类型。比如,在集合类中,无法将int,double放进去,因为集合容器要求的元素是object类型。
装箱:把基本数据类型转换成包装类的过程
拆箱:把包装类换成基本数据类型的过程
自动拆箱:将基本数据类型自动转换成对应的包装类
自动装箱:将包装类自动转换成对应的基本数据类型
自动拆箱与自动装箱的原理:
public static void main(String[] args){
Integer integer = 1;//装箱
int i = integer;//拆箱
}
自动装箱都是通过包装类的valueOf()方法实现的,自动拆箱都是通过包装类对象的xxxvalue()方法实现的。
在那些场景下,java会自动拆装箱?
场景一:将基本数据类型放入集合类
把基本数据类型放入集合类
import java.util.ArrayList;
import java.util.List;
public class demo2 {
public static void main(String[] args){
List Integer list = new ArrayList ();
for(int i = 0;i 10 ; i++){
list.add(i);
System.out.println(list);
}
场景二:包装类和基本类型的大小比较
包装类与基本数据类型进行比较运算,是先将包装类拆箱成基本数据类型,然后再进行比较
场景三:包装类的运算
两个包装类会被自动拆箱成基本类型进行计算
场景四:自动拆装箱与缓存
public class demo1 {
public static void main(String[] args){
Integer integer1 = 22;
Integer integer2 = 22;
if(integer1 == integer2){
System.out.println("integer1 == integer2");
}else{
System.out.println("integer1 != integer2");
Integer integer3 = 300;
Integer integer4 = 300;
if(integer3.equals(integer4)){
System.out.println("integer3 == integer4");
}else{
System.out.println("integer3 != integer4");
}
在java中==表示对象引用,而equals表示比较的值
所以上述结果都为true,如果第二个改为==结果就为false,原因是和Integer中的缓存机制有关,当需要进行自动装箱时,如果数字在-128-127之间,则会直接使用缓存中的对象,而不是重新创建一个对象。
以上就是java中的自动拆装箱与缓存(Java核心技术阅读笔记)(java 自动拆箱)的详细内容,想要了解更多 java中的自动拆装箱与缓存(Java核心技术阅读笔记)的内容,请持续关注盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。