Integer源码解析
来源:互联网 发布:二手淘宝店铺安全吗 编辑:程序博客网 时间:2024/06/02 20:42
public class Test {
public static void main(String[] args) {
Integer i1 = 100;
Integer i2 = 100;
if(i1 == i2){
System.out.println("==");
}else{
System.out.println("!=");
}
Integer i3 = 200;
Integer i4 = 200;
if(i3 == i4){
System.out.println("==");
}else{
System.out.println("!=");
}
}
}
结果为
==
!=
原因Integer 类会缓存-128 到 127 之间的整数 但是如果new Interger的话就是不同的对象了
源代码分析
//如果是在-128到正的127之间就返回缓存里面的值。
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);
}
//缓存的代码
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);
}
}
- Integer源码解析
- Integer源码解析
- JDK 1.7 Integer.parseInt 源码解析
- JDK 源码解析 —— Integer
- JDK 1.7 Integer.parseInt 源码解析
- 【JDK】:java.lang.Integer源码解析
- Integer的highestOneBit方法源码解析
- Java Integer.highestOneBit(int num) 源码解析
- Integer的highestOneBit方法源码解析
- JDK 源码解析 —— Integer
- Integer源码
- 【源码】Integer
- Java中Integer的变量比较源码解析
- java 源码 Integer
- JDK源码分析----Integer
- 【Java源码】Integer类
- Integer源码浅析IntegerCache
- Integer类源码分析
- PHP的ASCII码转换类
- SecureCRT日志
- “static_cast”: 无法从“void (__thiscall CMyNetChatDlg::* )(WPARAM,LPARAM)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”
- android 听筒播放音乐
- Tab控件的全程简单实现
- Integer源码解析
- mysql与sphinx查询性能对比试验
- Android和Java
- MFC中如何获取添加的资源
- linux下MySQL双机数据自动复制问题
- sql cursor 简单测试小实例
- shell调用sqlplus
- 进程控制:system, exec* and fork
- 转]Ubuntu Linux配置IP地址使用命令