Integer a = 1000;
Integer b = 1000;
System.out.println(b==a);
结果为false
Integer a == 100;
Integer b == 100;
System.out.println(b==a);
结果为true
按数学逻辑来说以上结果都应该是true,但是java中就不行
原因:两种情况(注释:用==判断变量是否相等的实质是比较变量的地址是否相等)
1.当数值是-128到127,Integer的存储方式是将数值直接放入缓冲池中,这是如果变量a,b的值是相等的,那么a,b的存储地址是相同的,所以当判断a==b时结果是true
2.当数值是超出-128到127的,Integer的存储方式是堆存储,无论a,b两个变量的值是否相等,a,b的存储地址是不同的,所以当判断a==b时结果是false