Integer a=127;//这是往常量池中添加一个,常量数值,而不是给变量a符值,然后把常量池中的这个数值的地址,符给变量a。
Integer b=127;//这一步还是往常量池中添加一个常量,但是如果常量中有这个数值就不填加了,然后把这个数值的地址,符给变量b。
所以a==b就是true了,地址相同吗,127=127用的是同一个数的地址。
而Integer x=new Integer(127);
Integer y=new Integer(127);
是在堆内存中开辟了俩片不同的空间,里边放了俩个,常量池中的地址。
==比较的是地址,俩片堆内存空间的地址当然不相同了。
|