黑马程序员技术交流社区
标题:
看见有好多人都在讨论==和equals的问题
[打印本页]
作者:
艺多不压身丶
时间:
2015-2-17 10:09
标题:
看见有好多人都在讨论==和equals的问题
本帖最后由 艺多不压身丶 于 2015-2-17 10:15 编辑
Integer a=123;
Integer b=123;
看见有好多人都在讨论==和equals的问题
请问(a==b)?结果是。。。。
作者:
coolmiao13
时间:
2015-2-17 10:18
刚看完毕老师的这一段。
如果小于byte的数字的话,会共享已经出现的对象。
结果是true。
作者:
lwj123
时间:
2015-2-17 12:41
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也是同一样的道理!!懂吗?
这个就是张老师说的享元模式!!!
很多个小的并且经常用的对象事先保存起来,以便日后方便使用!
作者:
艺多不压身丶
时间:
2015-2-17 14:06
lwj123 发表于 2015-2-17 12:41
true!!!!!
Integer a = 123;
底层调用的方法是:Integer a = Integer.valueOf(123)
版主解释滴好详细:lol
作者:
血色@残阳
时间:
2015-2-17 15:10
这个是true,版主解释太详细了,不过感觉不够通俗,应该说这个其实包装后比较的是字符串,既然是字符串,就按字符串的比较来就行了
作者:
苏安东
时间:
2015-2-17 16:25
通俗点吧 感觉萌萌的
作者:
枪杆不如笔杆
时间:
2015-2-17 23:36
我以为只有String类型的才会有这样的情况,装箱操也有类似的做法啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2