有意思的代码
-
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缓存处理