Java 中 Integer 包装器类比较相等问题(拆箱、装箱、享元)

    自动装箱拆箱是指基本数据类型的包装类在一些操作中可以自动的将基本数据类型包装为对应的包装类,或自动的将包装类拆箱而转换为基本数据类型。

    享元模式是一直简单的设计模式,是指对于很多个小的对象,它们有很多的相同点,就可以把它们看做是同一个对象,对于那些不同的地方可以做为方法的参数进行导入,对于相同的地方可以作为它的内部属性,这样就大大减少了对象的数量。如Integer类型的对象就使用了享元模式设计。

 

下面是一个示例程序

public class AutoBox {

 public static void main(String[] args) {
  
  Integer i =8; //自动装箱,将基本类型包装为对象
  System.out.println(i+10);//自动拆箱,将包装类转换为基本类型
  
  //享元模式即flyweight
  Integer i1 =4;
  Integer i2 =4;
  System.out.println(i1==i2); //true
  //即对于很多个小的对象,它们有很多的相同点,可以把它们看做是同一个对象,
  //对于那些不同的地方可以做为方法的参数进行导入,对于相同的地方可以作为它的内部属性 
  Integer i3 =134;
  Integer i4 =134;
  System.out.println(i3==i4);  //false
  //如对于占一个字节的数字(-128——127),则就可以当成是同一个对象,当然有new操作符的话就是两个不同对象了

 }

}


    结论:Integer对象之间作“==”比较时,如果2个的值都在(-128~127)之间的话,效果等同于int和int作比较,若不满足前面的条件的话,则比较的是对象是否相等,此时要判断值是否相等要用equal。所有除非特殊需要,所有包装器类比较大小时最好都用equal。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值