LearnJava(一) 数据类型

8个基本数据类型
  • boolean(1)
  • byte(8)
  • char(16)
  • short(16)
  • int (32)
  • long(64)
  • float(32)
  • double(64)

每种基本数据类型都有对应的包装器类型,基本数据类型与其对应的包装类型之间的赋值使用自动装箱与拆箱完成。

简单来说 装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。

Integer i = 10;      //装箱
int n = i;           //拆箱

关于装箱与拆箱相关概念可参考博客 深入剖析Java中的装箱与拆箱

装箱过程是通过调用包装器的 valueOf 方法实现的,拆箱过程是通过调用包装器的
×××value(×××表示对应的基本数据类型)方法实现的。

// 自动装箱,与下方调用 valueOf方法等同
Integer i1 = 200;
Integer i2 = 200;
System.out.println(i1 == i2);         // false

Integer i3 = Integer.valueOf(123);
Integer i4 = Integer.valueOf(123);
System.out.println(i3 == i4);        // true

Integer i5 = new Integer(200);
Integer i6 = new Integer(200);
System.out.println(i6 == i5);        // false

new Integer() 与 Integer.valueOf() 的区别在于,new Intege() 每次都会创建一个新的对象,而 Integer.valueOf() 可能会使用缓存对象,这涉及到缓存池,Integer的缓存池大小默认为-128~127,当数值在 [-128,127] 时,便返回指向Integer缓存池 (IntegerCache.cache )中已经存在的对象的引用;否则,创建一个新的Integer对象。

  • i1 和 i2 数值为200,会创建新的对象,因此不等
  • i3 和 i4 数值为123 ,指向同一个对象,因此相等
  • i5 和 i6 都是直接创建新的对象,因此不等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值