java程序的151个建议(二)
来源:互联网 发布:c语言换行符怎么输入 编辑:程序博客网 时间:2024/06/03 15:00
public class Client {public static void main(String[] args) {int num1=127;int num2=255;int num3=580;int num[]={num1,num2,num3};for(int n:num){Integer i=new Integer(n);Integer j=new Integer(n);//new 产生的对象System.out.println(i==j);i=n;j=n;//基本类型转换成包装类型后System.out.println(i==j);i=Integer.valueOf(n);j=Integer.valueOf(n);//通过Integer的静态方法生成System.out.println(i==j);}}}
输出:false
truetrue
false
false
false
false
false
false
解释:
(1)new产生的Integer对象
new产生的对象地址不相等,所以false
(2)装箱生成的对象
装箱动作是通过valueOf()实现的,所以后两个是一样的。下边是valueOf(int i)的源码:
public static Integer valueOf(int i) { if(i >= -128 && i <= IntegerCache.high) return IntegerCache.cache[i + 128]; else return new Integer(i); }
其中IntegerCache.high=127
也就说-128到127之间的数缓存了,即-128到127之间的数字直接从整形池中获得对象,其他的直接new。
private static class IntegerCache { static final int high; static final Integer cache[]; static { final int low = -128; // high value may be configured by property int h = 127; if (integerCacheHighPropValue != null) { // Use Long.decode here to avoid invoking methods that // require Integer's autoboxing cache to be initialized int i = Long.decode(integerCacheHighPropValue).intValue(); i = Math.max(i, 127); // Maximum array size is Integer.MAX_VALUE h = Math.min(i, Integer.MAX_VALUE - -low); } high = h; cache = new Integer[(high - low) + 1]; int j = low; for(int k = 0; k < cache.length; k++) cache[k] = new Integer(j++); } private IntegerCache() {} }
0 0
- java程序的151个建议(二)
- 改善java程序的151个建议 读后感二
- 《改善Java程序的151个建议》
- 改善java程序的151个建议
- 《编写高质量代码:改善Java程序的151个建议》读书笔记二:基本类型
- 改善Java程序的151个建议--记录二(持续更新)
- 改善Java程序的151个建议笔记
- java程序的151个建议(一)
- 改善java程序的151个建议 读后感一
- 改善java程序的151个建议 读后感三
- 改善java程序的151个建议 读后感四
- 改善java程序的151个建议 读后感五
- 读改善java程序的151个建议(1)
- 读改善java程序的151个建议(2)
- 读改善java程序的151个建议(3)
- 读改善java程序的151个建议(4)
- 读改善java程序的151个建议(5)
- 改善java程序的151个建议--笔记一
- 特征值与特征向量
- Spring dataSource配置
- windows 禁用中文输入法
- HDFS 读写流程
- tcp长连接tcp短连接
- java程序的151个建议(二)
- Jquery与Jquery mobile几种渲染方式
- sql语法3
- 子类重写父类的方法,用super调用父类中的原方法
- xcode版本历史
- PCA的数学原理
- python md5
- make uImage 和make zImage的区别
- 采用highchart js+flot+rrd生成cpu、mem状态监控图