java Integer.valueOf()方法
2016-07-13 09:53
381 查看
nteger.valueOf()方法实现如下:
[java]
view plain
copy
public static Integer valueOf(int i) {
final int offset = 128;
if (i >= -128 && i <= 127) { // must cache
return IntegerCache.cache[i + offset];
}
return new Integer(i);
}
Integer.valueOf()方法基于减少对象创建次数和节省内存的考虑,缓存了[-128,127]之间的数字。此数字范围内传参则直接返回缓存中的对象。在此之外,直接new出来。
IntegerCache的实现:
[java]
view plain
copy
private static class IntegerCache {
private IntegerCache(){}
static final Integer cache[] = new Integer[-(-128) + 127 + 1];
static {
for(int i = 0; i < cache.length; i++)
cache[i] = new Integer(i - 128);
}
}
测试代码
[java]
view plain
copy
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));
打印结果如下:
true
false
true
true
转载自http://blog.csdn.net/randyjiawenjie/article/details/7603427
[java]
view plain
copy
public static Integer valueOf(int i) {
final int offset = 128;
if (i >= -128 && i <= 127) { // must cache
return IntegerCache.cache[i + offset];
}
return new Integer(i);
}
Integer.valueOf()方法基于减少对象创建次数和节省内存的考虑,缓存了[-128,127]之间的数字。此数字范围内传参则直接返回缓存中的对象。在此之外,直接new出来。
IntegerCache的实现:
[java]
view plain
copy
private static class IntegerCache {
private IntegerCache(){}
static final Integer cache[] = new Integer[-(-128) + 127 + 1];
static {
for(int i = 0; i < cache.length; i++)
cache[i] = new Integer(i - 128);
}
}
测试代码
[java]
view plain
copy
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));
打印结果如下:
true
false
true
true
转载自http://blog.csdn.net/randyjiawenjie/article/details/7603427
相关文章推荐
- Java Integer判断是否相等
- Java Integer中遇到的坑
- UIGraphicsBeginImageContext系列知识
- 开源视频会议BigBlueButton 0.81二次开发API
- POJ 1904 King's Quest 强连通分量+二分匹配
- EasyUI datagrid : 启用行号、固定列及多级表头后,头部行号位置单元格错位的问题
- iOS App开发中UIViewController类的使用教程
- SequenceInputStream
- WebUI 常用
- 不自定义cell,最原始的创建UITableViewCell
- 正确使用String,StringBuffer,StringBuilder
- android 事件处理机制之requestDisallowInterceptTouchEvent
- C#时间转换UInt64<--->DateTime
- Vue.js
- 设计模式(2)-创建型-建造者模式(Builder)
- 设计模式(2)-创建型-建造者模式(Builder)
- 设计模式(2)-创建型-建造者模式(Builder)
- 设计模式(2)-创建型-建造者模式(Builder)
- druid数据源的加密解密工具
- UESTC 2016 Summer Training #2 Div.2 A dp、递推、多阶段问题