您的位置:首页 > 编程语言 > Java开发

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

2017-07-04 12:02 225 查看
    自动装箱拆箱是指基本数据类型的包装类在一些操作中可以自动的将基本数据类型包装为对应的包装类,或自动的将包装类拆箱而转换为基本数据类型。

    享元模式是一直简单的设计模式,是指对于很多个小的对象,它们有很多的相同点,就可以把它们看做是同一个对象,对于那些不同的地方可以做为方法的参数进行导入,对于相同的地方可以作为它的内部属性,这样就大大减少了对象的数量。如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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 包装器类