使用Java包装类时的小误区

文章讨论了Java包装类的使用,重点在于理解自动装箱和拆箱机制,以及equals与==在比较-128和-129时的不同。包装类的缓存机制导致-128和-129比较结果不同,-128会从缓存中获取对象,而-129则创建新对象。
摘要由CSDN通过智能技术生成

@使用Java包装类时应该注意什么

java包装类都有哪些

byte=Byte
short=Short
int=integer
long=Long
float=Float
double=Double
boolean=Boolean
char=Character

这些就是我们的基本数据类型对应的包装类,但是我们在使用的时候需要注意些什么呢?我们都知道包装类和对应的基本数据类型的类型转换是由自动装箱和自动拆箱实现的。
但是在使用包装类时我们用==和equals的区别。

Integer a=-129;
Integer b=-129;
System.out.println(a.equals(b));
System.out.println(a==b);
System.out.println("==============");
Integer c=-128;
Integer d=-128;
System.out.println(c.equals(d));
System.out.println(c==d);

结果:

true
false
==============
true
true

包装类在进行= =比较的时候我们比较的是对象的地址,equals比较的是对象的值。为什么在-128用是true-129是false?
因为Integer a=-129;相当于编译器执行了Integer a = Integer.valueOf(-129)操作。由于在包装类中有一个 IntegerCache的缓存区如果值在 [-128,127] 区间,且直接返回缓存中的对象并不创建新对象,否则,调用构造器执行类型转换创建新对象!
所以我们不要误以为包装类比较值的时候可以用= =!
各个包装类缓存值范围 :
boolean:true和false
byte:-128~127
char:0~127
short:-128~127
int:-128~127
long:-128~127

欢迎补充希望大家学习愉快!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值