上面的朋友说的也比较清楚了。我在说说自己的理解啊。
其实说起来,这个Integer和int的关系有点像String和StringBuilder的关系。
java为了优化内存,提高性能,就单开了一片内存池(pool),也就是说,在这里共享了那些固定不变的数据(我个人理解啊),如数字和字符串等等,这也是一种对象。
重点说Integer和int,在内存池中定义他们的范围是-128 ~ 127,这里的数十共享的,其实共享的是地址,就是变量指向的地址。(题外话:变量其实都是指向的地址,地址才是代表一块内存的空间的。)
是java为了提高效率,初始化了-128--127之间的整数对象,所以,你写Integer a =100的话,是在内存池中创建了一个变量为a的对象,再写b=100,就共享了100这个数据,其实是指向了相同地址。
但是你超过了这个范围的话,这数据就不是共享的了,指向的不是相同地址。所以就不想等了。你可以看看这篇文章:
http://hi.baidu.com/next2_me/item/128f29c36b2fc6320931c6f7
和关于String中比较的内容:
http://blog.csdn.net/shengfeixiang/article/details/8577842
希望对你有帮助啊,一定要自己总结总结哦 |