A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

本帖最后由 艺多不压身丶 于 2015-2-17 10:15 编辑

Integer a=123;
Integer b=123;
看见有好多人都在讨论==和equals的问题
请问(a==b)?结果是。。。。

6 个回复

倒序浏览
刚看完毕老师的这一段。
如果小于byte的数字的话,会共享已经出现的对象。
结果是true。
回复 使用道具 举报
true!!!!!
Integer a = 123;
底层调用的方法是:Integer a = Integer.valueOf(123)
在底层源码中:
for(int k = 0; k < cache.length; k++)
                cache[k] = new Integer(j++);
它将-128~127的数据事先在static代码块中初始化了每一值倒在cache数组中
它会判断123是否在一个byte范围内,如果是,在缓冲数组中取,b也是同一样的道理!!懂吗?
这个就是张老师说的享元模式!!!
很多个小的并且经常用的对象事先保存起来,以便日后方便使用!
回复 使用道具 举报
lwj123 发表于 2015-2-17 12:41
true!!!!!
Integer a = 123;
底层调用的方法是:Integer a = Integer.valueOf(123)

版主解释滴好详细:lol
回复 使用道具 举报
这个是true,版主解释太详细了,不过感觉不够通俗,应该说这个其实包装后比较的是字符串,既然是字符串,就按字符串的比较来就行了
回复 使用道具 举报
通俗点吧  感觉萌萌的
回复 使用道具 举报
我以为只有String类型的才会有这样的情况,装箱操也有类似的做法啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马