有意思的代码
-
JAVA自动装箱问题和对象加锁问题
public static void main(String[] args) {
// Integer a = new Integer(1000);
Integer a = 1000; //jdk5.0之后 . TODO 自动装箱,编译器帮我们改进代码:Integer a = new Integer(1000);
Integer b = 123;
int c = b; // TODO 自动拆箱,编译器改进:b.intValue();
System.out.println(c);
Integer d = 1234;
Integer d2 = 1234;
System.out.println(d==d2); //false
System.out.println(d.equals(d2));
System.out.println("###################");
Integer d3 = -128; //TODO [-128,127]之间的数,仍然当做基本数据类型来处理。 JDK缓存处理
Integer d4 = -128;
System.out.println(d3==d4); // true
System.out.println(d3.equals(d4));
}
为什么d3==d4呢?
class编译文件查看

继续深究下valueOf()

内部使用了内部类缓存对象 [-128,127]之间的数,仍然当做基本数据类型来处理。 JDK缓存处理

浙公网安备 33010602011771号