黑马程序员技术交流社区

标题: 请教 [打印本页]

作者: 小虎199406    时间: 2015-6-22 10:28
标题: 请教
请教一下各位   为什么会是这样
  1. Integer m=128;
  2. Integer n=128;
  3. Syatem.out.println(m==n);
复制代码
结果是false !!!!!!!!到底怎么回事    谢谢

作者: lvzhfeng    时间: 2015-6-22 10:40
  1. Integer m=128;
复制代码

完成了自动装箱操作,相当于执行了
  1. Integer m = new Integer(m);
复制代码

所以你做了两次装箱,虽然值一样,但却是new了两个不同的对象
我想Integer类不想String,应该是没有复写equals方法,所以你直接用==比,比的应该是两个对象的
地址值并不是你认为的赋予的值,这是两个不同的对象,地址值当然不会相同
作者: lvzhfeng    时间: 2015-6-22 10:41
上边写错了,应该是
  1. Integer m = new Integer(128);
复制代码

作者: 腹黑生姜    时间: 2015-6-22 22:03
byte范围是:-128~127,超过范围会开辟新空间,所以如果是127那么就是true,可以试一下!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2