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。
享元模式是一直简单的设计模式,是指对于很多个小的对象,它们有很多的相同点,就可以把它们看做是同一个对象,对于那些不同的地方可以做为方法的参数进行导入,对于相同的地方可以作为它的内部属性,这样就大大减少了对象的数量。如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】Integer变量相等(==)比较问题
- Java中Integer与int类型的比较--装箱和拆箱
- Java中Integer与int类型的比较--装箱和拆箱
- Integer的自动拆箱和自动装箱的陷阱(整型数-128到127的值比较问题)
- java中int和Integer的==比较和拆箱装箱
- Java自动装箱解箱问题&&int和Integer类型==比较问题
- [疯狂Java]面向对象:基本类型的包装器类型、自动装箱/拆箱、包装器类型大小/相等比较
- java Integer == 比较的小问题
- Java Integer装箱和拆箱
- java拆箱装箱中的一个问题
- 两个Integer值比较不相等问题
- Integer自动装箱、拆箱问题(转)
- java Integer和int之间==的比较问题。求解释
- Java中字符串比较相等问题
- Java自动装箱与拆箱问题研究
- java Integer与int的装箱(缓存)与拆箱
- java Integer 比较的问题
- java Integer和int之间==的比较问题。求解释
- java中Integer的比较的问题
- java基础之Integer和Long对象相等比较 .