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

© 葛晓东 中级黑马   /  2014-6-4 21:15  /  1196 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 葛晓东 于 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输出的结果是什么?为什么?

4 个回复

倒序浏览
本帖最后由 yang1352546 于 2014-6-4 21:24 编辑

a==b 比较的是两个对象的地址,第一个里面的两个对象都是NEW出来的,所以不相等.是false,这里equals是重写了Object的方法。比较的事两个对象的内容,所以相等,是TRUE。    第二种因为变量实在byte范围之内的,JVM不会开启新的内存空间.多以都是TRUE.

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
具体请看==与equals的区别
回复 使用道具 举报
1 false 2 true
A和B指向了同一个integer对象,因为当数值在byte范围内,对于新特性来说,如果该数值已经存在,则不会在开辟新空间       
回复 使用道具 举报
yang1352546 发表于 2014-6-4 21:20
a==b 比较的是两个对象的地址,第一个里面的两个对象都是NEW出来的,所以不相等.是false,这里equals是重写 ...

就是byte容易弄错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马