黑马程序员技术交流社区

标题: 对==与Equal的理解 [打印本页]

作者: 刘少华    时间: 2012-1-19 22:15
标题: 对==与Equal的理解
本帖最后由 刘少华 于 2012-1-27 13:37 编辑

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

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

未命名.jpg

作者: 刘笑    时间: 2012-6-12 11:05
==操作符专门用来比较变量的值是否相等;对象内容的比较,则是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




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