Integer a = Integer.valueOf(127);
Integer b = Integer.valueOf(127);
Integer c = Integer.valueOf(128);
Integer d = Integer.valueOf(128);
System.out.println(a == b);
System.out.println(c == d);
结果:
true
false
原因:
![两个Integer变量a和b,值相等,a==b等于多少? 两个Integer变量a和b,值相等,a==b等于多少?](https://image.shishitao.com:8440/aHR0cHM6Ly9ub3RlLnlvdWRhby5jb20veXdzL3B1YmxpYy9yZXNvdXJjZS9hN2JiYzA2MDA0OWI0Nzc1NjFhOGY0ODI5Mjg1MmM5Yy94bWxub3RlLzVDNUIxRjdFMEI4OTRDMTlBODhBQzQ0RTM4MTkzMDEzLzE3OTk3.jpg?w=700&webp=1)
Integer类已经对数字0-127做了一个缓存,创建0-127这些常用整数类型是直接从缓存中调引用,所以是true,而超过127则是创建新的对象,所以内存地址的引用不一致,故是false。