一篇博文告诉你java中的自动装箱与拆箱

自动装箱与拆箱

什么是装箱?

装箱:将基本类型用它们对应的引用类型包装起来;

Integer a = 10;  //装箱
//这个过程中会自动根据数值创建对应的 Integer对象

那什么是拆箱呢?

拆箱:将包装类型转换为基本数据类型;

顾名思义,跟装箱对应,就是自动将包装器类型转换为基本数据类型:

Integer i = 10;
int a = i;  //拆箱
//拆箱就是自动将包装器类型转换为基本数据类型。

int 和 Integer 有什么区别

Java 是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型。

为了能够将这些基本数据类型当成对象操作,Java 为每一个基本数据类型都引入了对应的包装类型(wrapper class)。

Java 为每个原始类型提供了包装类型

原始类型
byte
short
int
long
flaot
double
boolean
char
Byte
Float
Double
Short
Integer
Long
Boolean
Character
包装类型
所以来说,

装箱就是把基础类型封装成一个类。
比如把int封装成Integer,这时你就不能把他当成一个数了,而是一个类了,对他的操作就需要用它的方法了。

拆箱就是把类转换成基础类型。
比如你算个加法什么的是不能用类的,就得把它转换成基本类型.

ps:jdk5以后可以自动转换。

Integer a= 127 与 Integer b = 127相等吗

  1. 对于对象引用类型:==比较的是对象的内存地址。
  2. 对于基本数据类型:==比较的是值。
因此,

如果整型字面量的值在-128到127之间,那么自动装箱时不会new新的Integer对象,而是直接引用常量池中的Integer对象,超过范围 a1==b1的结果是false

举个栗子:

public static void main(String[] args) { 

Integer a = new Integer(3); 
Integer b = 3; // 将3自动装箱成Integer类型 
int c = 3; 

System.out.println(a == b); // false 
//两个引用没有引用同一对象
System.out.println(a == c); // true 
//a自动拆箱成int类型再和c比较
System.out.println(b == c); // true 

Integer a1 = 128; 
Integer b1 = 128; 

System.out.println(a1 == b1); // false 

Integer a2 = 127; 
Integer b2 = 127; 

System.out.println(a2 == b2); // true 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值