public static void main(String[] args) {
Integer a=1;
Integer b=2;
Integer c=3;
Integer d=3;
Integer e=321;
Integer f=321;
Long g=3L;
System.out.println(c==d);true
System.out.println(e==f);false
System.out.println(c==(a+b));true
System.out.println(c.equals(a+b));true
System.out.println(g==(a+b));true
System.out.println(g.equals(a+b));false
}
}
反编译的代码
Integer a = Integer.valueOf(1);
Integer b = Integer.valueOf(2);
Integer c = Integer.valueOf(3);
Integer d = Integer.valueOf(3);
Integer e = Integer.valueOf(321);
Integer f = Integer.valueOf(321);
Long g = Long.valueOf(3L);
System.out.println(c == d);
System.out.println(e == f);
System.out.println(c.intValue() == a.intValue() + b.intValue());
System.out.println(c.equals(Integer.valueOf(a.intValue() + b.intValue())));
System.out.println(g.longValue() == a.intValue() + b.intValue());
System.out.println(g.equals(Integer.valueOf(a.intValue() + b.intValue())));
在自动装箱时对于值从–128到127之间的值,它们被装箱为Integer对象后,会存在内存中被重用,所以范例4.6中使用==进行比较时,i1 与 i2实际上参考至同一个对象。如果超过了从–128到127之间的值,被装箱后的Integer对象并不会被重用,即相当于每次装箱时都新建一个Integer对象,所以范例4.7使用==进行比较时,i1与i2参考的是不同的对象。
源代码
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);
}
static final Integer cache[] = new Integer[-(-128) + 127 + 1];
static {
for(int i = 0; i < cache.length; i++)
cache[i] = new Integer(i - 128);
}
}
分享到:
相关推荐
day002 JAVA语法基础-方法.doc
day002 JAVA语法基础-数组加强.doc
day002 JAVA语法基础-数组入门.doc
57.055.JAVA基础教程_Java基本语法-自动类型提升运算2(57).rar
day001 JAVA语法基础-JAVA环境搭建&第一个java程序.doc
day002JAVA语法基础-选择结构&循环结构.doc
day002 JAVA语法基础-表达式&类型转换&运算符.doc
java语法 非矩形数组 马克-to-win java视频 二重循环
java语法 method overload 马克-to-win java视频 方法 重载
京动力节点-Java编程零基础教程-001-编程基础-基本概念-语言、程序、编程.mp4 北京动力节点-Java编程零基础教程... 北京动力节点-Java编程零基础教程-125-Java基本语法-方法递归调用-递归解决阶乘的栈内存变化过程.avi
赠送jar包:flink-java-1.14.3.jar; 赠送原API文档:flink-java-1.14.3-javadoc.jar; 赠送源代码:flink-java-1.14.3-sources.jar; 赠送Maven依赖信息文件:flink-java-1.14.3.pom; 包含翻译后的API文档:flink-...
Java语法手册,还有其他很多java类资源,均为HTML格式,可以直接左侧导航点击查询.
本章是Java基础语法的学习总结
java-c语法8---数组的数组1 java视频 马克java社区 马克towin
1.面向对象和面向过程的区别以及...13.自动装箱与拆箱 14.在一个静态方法内调用一个非静态成员为什么是非法的 15.在 Java 中定义一个不做事且没有参数的构造方法的作用 16. import java 和 javax 有什么区别 17.....
java-c语法5.1--do while循环---马克-to-win java视频 子函数
java语法 数组 马克-to-win java视频 array 的详细介绍
java语法 调试 马克-to-win java视频 数组 debug 单步调试加断点
java语法 method 递归 马克-to-win java视频 方法 重载
有意思的是,在编程领域,除了语法糖,还有语法盐和语法糖精的说法,篇幅有限这里不做扩展了。但其实,Java虚拟机并不支持这些语法糖,这些语法糖在编译阶段就会被还原