黑马程序员技术交流社区
标题:
Integer类型小问
[打印本页]
作者:
葛晓东
时间:
2014-6-4 21:15
标题:
Integer类型小问
本帖最后由 葛晓东 于 2014-6-7 22:23 编辑
1. Integer a = 128;
Integer b = 128;
Syso(a==b);
Syso(a.equals(b));
2. Integer a = 127;
Integer b = 127;
Syso(a==b);
Syso(a.equals(b));
复制代码
1,2输出的结果是什么?为什么?
作者:
yang1352546
时间:
2014-6-4 21:20
本帖最后由 yang1352546 于 2014-6-4 21:24 编辑
a==b 比较的是两个对象的地址,第一个里面的两个对象都是NEW出来的,所以不相等.是false,这里equals是重写了Object的方法。比较的事两个对象的内容,所以相等,是TRUE。 第二种因为变量实在byte范围之内的,JVM不会开启新的内存空间.多以都是TRUE.
作者:
Lex
时间:
2014-6-4 21:25
具体请看==与equals的区别
作者:
淡淡柠檬茶
时间:
2014-6-4 21:26
1 false 2 true
A和B指向了同一个integer对象,因为当数值在byte范围内,对于新特性来说,如果该数值已经存在,则不会在开辟新空间
作者:
葛晓东
时间:
2014-6-4 21:27
yang1352546 发表于 2014-6-4 21:20
a==b 比较的是两个对象的地址,第一个里面的两个对象都是NEW出来的,所以不相等.是false,这里equals是重写 ...
就是byte容易弄错
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2