Java中的AutoBoxing (Integer对-128~127之间数值的特殊处理)
来源:互联网 发布:如何开展网络推广工作 编辑:程序博客网 时间:2024/06/14 08:31
理解Java中Integer和int的Autoboxing,有助于java新手理解java内存机制。
在Java中的,Integer和int是可以Autoboxing和boxing的,这里要注意的是:在 int自动装箱成Integer的过程中,如果数值是在-128~127之间的值的话,那么会在在内存中供重用,用语句说明如下:
//i1 and i2 is in the range of -128~127, while i3 and i4 not. Integer i1 = 102; Integer i2 = 102; Integer i3 = 232; Integer i4 = 232; //compare the i1 whit i2 if(i1 == i2) System.out.print("i1 == i2"); else System.out.println("i1 != i2"); //compare the i3 whit i4 if(i3 == i4) System.out.print("i3 == i4"); else System.out.println("i3 != i4");
输 出的结果便是
i1 == i2 i3 != i4
当然,看这段代码的时候,要明白“==”的用法。
另外要注意的一点的是,在不涉及Autoboxing的时候,Integer数值没有以上所述的特性如:还是以上的代码,只是在创建Integer对象的时候不同,
Integer i1 = new Integer(102); Integer i2 = new Integer(102); Integer i3 = new Integer(232); Integer i4 = new Integer(232);
此时,输出的结果是:
i1 != i2 i3 != i4
这 里再指明的一点是关于equals方法的,这个方法用在这里就可以避免Integer类的这种特殊处理,将以上代码中的if语句的改一下:
if(i1 == i2) 可以改成 if( i1.equals(i2) ) ,就可以了。
补充的是:equals()的原型是:
public boolean equals(Object obj) { return (this == obj); }
那 这个if(i1 == i2) 和 if( i1.equals(i2) )不是异曲同工了吗?
不是的,Integer中已经对这个方法作了重载:
public boolean equals(Object obj) { if (obj instanceof Integer) { return value == ((Integer)obj).intValue(); } return false; }
0 0
- Java中的AutoBoxing (Integer对-128~127之间数值的特殊处理)
- Java中的AutoBoxing (Integer对-128~127之间数值的特殊处理)
- Java中的AutoBoxing (Integer对-128~127之间数值的特殊处理)
- java 对数值的处理
- Java对特殊编码方式的处理
- Java的autoboxing
- Java 中的Integer Pool 和 autoboxing-same-value-to-different-objects问题
- [Java 数值] 数值类型之间的转换
- Java内置类型的Autoboxing实现机制和Integer的CacheInteger的使用
- Integer 数值范围在-128~127之间时分别使用 ==和 equals进行比较
- 对Java中的 int AND Integer的理解
- OCJP之Integer autoboxing
- java中的autoboxing和auto-unboxing
- java 对字符串中的数值排序
- JAVA-数值计算中的特殊情况,NAN,Infinity
- Java对特殊日期格式进行处理
- Java中数值类型之间的转换
- java-数值类型之间的转换
- IOS应用开发-图片处理(拉伸图片 创建缩略图 解决图片旋转的问题 图片编码及上传 将图片写入磁盘)
- Chan Spreadsheet 1.2
- 【ZooKeeper Notes 13】ZooKeeper Watcher的事件通知类型
- 系统函数
- [IOS]IOS8自定义输入法教程:如何创建第三方输入法
- Java中的AutoBoxing (Integer对-128~127之间数值的特殊处理)
- Linux显示PCI设备
- 行为模式之Template(模板模式)
- linux设备驱动程序的makefile文件例子
- hdu 2824 线性筛素数求欧拉函数+前缀和
- 【ZooKeeper Notes 5】单机启动多个ZooKeeper实例注意点
- Linux显示USB设备
- 应用QQ2440(s3c2440)ARM开发板驱动MMA7455加速度计的linux设备驱动编写
- spi子系统分析续