java Integer.valueOf()方法
2014-02-11 13:13
288 查看
QQ交流群:335671559
Integer.valueOf()方法实现如下:
Integer.valueOf()方法基于减少对象创建次数和节省内存的考虑,缓存了[-128,127]之间的数字。此数字范围内传参则直接返回缓存中的对象。在此之外,直接new出来。
IntegerCache的实现:
测试代码
[java] view
plaincopy
Integer i1 = Integer.valueOf(12);
Integer i2 = Integer.valueOf(12);
Integer i3 = Integer.valueOf(129);
Integer i4 = Integer.valueOf(129);
System.out.println(i1==i2);
System.out.println(i3==i4);
System.out.println(i1.equals(i2));
System.out.println(i3.equals(i4));
System.out.println(Integer.valueOf("127")==Integer.valueOf("127"));
System.out.println(Integer.valueOf("128")==Integer.valueOf("128"));
System.out.println(Integer.valueOf("128")==Integer.parseInt("128"));
打印结果如下:
true
false
true
true
true
false
true
原文:/article/2506284.html
Integer.valueOf()方法实现如下:
public static Integer valueOf(int i) { assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i <= IntegerCache.high) return <span style="color:#ff0000;">IntegerCache</span>.cache[i + (-IntegerCache.low)]; return new Integer(i); }
Integer.valueOf()方法基于减少对象创建次数和节省内存的考虑,缓存了[-128,127]之间的数字。此数字范围内传参则直接返回缓存中的对象。在此之外,直接new出来。
IntegerCache的实现:
private static class IntegerCache { static final int low = -128; static final int high; static final Integer cache[]; static { int h = 127; String integerCacheHighPropValue = sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high"); if (integerCacheHighPropValue != null) { int i = parseInt(integerCacheHighPropValue); 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() {} }
测试代码
[java] view
plaincopy
Integer i1 = Integer.valueOf(12);
Integer i2 = Integer.valueOf(12);
Integer i3 = Integer.valueOf(129);
Integer i4 = Integer.valueOf(129);
System.out.println(i1==i2);
System.out.println(i3==i4);
System.out.println(i1.equals(i2));
System.out.println(i3.equals(i4));
System.out.println(Integer.valueOf("127")==Integer.valueOf("127"));
System.out.println(Integer.valueOf("128")==Integer.valueOf("128"));
System.out.println(Integer.valueOf("128")==Integer.parseInt("128"));
打印结果如下:
true
false
true
true
true
false
true
原文:/article/2506284.html
相关文章推荐
- Confluence 芝士(Cheese)宏
- Qt 5.3将支持Windows 8/RT (Modern UI), Windows Phone 8
- iPhone UI 设计的一些标准尺寸1
- ios tableView那些事 (十九) UITableView 加载动态cell
- iOS真机UI调试利器——Reveal
- Easyui - tooltip 箭头在IE下无法显示的解决方法
- 照片浏览滑动效果UIScrollView和UIPageControl组合
- 三星i9220/N7000 MIUI详细刷机教程通用版
- IOS7 下UISwitch 设为大小51x31
- php: /usr/local/lib/libxml2.so.2: no version information available (required by php)
- Android UI线程和非UI线程
- A Stack or A Queue?
- 使用RequireJS优化Web应用前端
- iOS中UITableView学习笔记(二)之cell重用
- iOS7中UITextView 的bug
- iOS 获取GUID
- iPhone开发--UIActionSheet的按钮不灵敏
- iPhone UITextField 属性
- Cultrue ‘zh-hans’ is a neutral cultrue报错解决办法
- [Leetcode] Distinct Subsequences (Java)