黑马程序员技术交流社区

标题: Integer类型小问 [打印本页]

作者: 葛晓东    时间: 2014-6-4 21:15
标题: Integer类型小问
本帖最后由 葛晓东 于 2014-6-7 22:23 编辑
  1. 1.        Integer a = 128;
  2.         Integer b = 128;
  3.         Syso(a==b);
  4.         Syso(a.equals(b));
  5. 2.        Integer a = 127;
  6.         Integer b = 127;
  7.         Syso(a==b);
  8.         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