有意思的代码

  1. 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缓存处理

 

posted @ 2022-08-05 16:49  cqzaier  阅读(29)  评论(0)    收藏  举报