因为你比较的是a,b两个引用的地址,当引用指向的值在-128-127之间时,它会先在栈内存找看有没有这个值,如果有它就直接指向,不再开辟新空间,如果没有,就开辟新空间。
比如:Integer a=120;Integer b=120;,因为内存中已有120这个值,所以b和a指向的是同一个内存地址。Integer a=120;Integer b=125.因为内存中没有125这个值,所以b指向一块新的地址,所以a,b不等。你的代码中Integer a=150;Integer b=150,因为他们超出127了,所以即使值相等,a,b也分别指向不同的地址,所以a!=b。 |