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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘少华 黑马帝   /  2012-1-19 22:15  /  2139 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘少华 于 2012-1-27 13:37 编辑

一直觉得object类中 ==比较的是地址,即栈中的内容,Equal则比较的是所引用的对象的值,即堆中的内容。
string类重写了父类的方法,==与Equal都是比较的这个字符串的值,即堆中的内容是否相等,ReferenceEquals比较的是地址。
在值类型中,==与Equal也都比较的是值,只不过是栈中的内容。
  不知道我的理解正确不,请高手指点。

未命名.jpg (45.97 KB, 下载次数: 31)

未命名.jpg

1 个回复

倒序浏览
==操作符专门用来比较变量的值是否相等;对象内容的比较,则是equals方法做的事。比如:
int a=10;
int b=10;

则a==b将是true。
  
String c=new String("foo");
String d=new String("foo");

则c==d将返回false。
c和d的值其实是两个不同的内存地址的值,所以使用"=="操作符,结果会是false。但如果System.out.println(c.equals(d));的话则输出true
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马