黑马程序员技术交流社区

标题: "=="和equals区别? [打印本页]

作者: 未名以律    时间: 2014-8-12 11:07
标题: "=="和equals区别?
本帖最后由 未名以律 于 2014-8-13 07:52 编辑

int a=10;   
int b=10;  
a==b是true。

String a=new String("foo");   
String b=new String("foo");    
a==b是false。
不是一样的吗?怎么会是false






作者: tiandzwx    时间: 2014-8-12 11:17
==比较的是两个的值是否相等;
int a 和int b都为10,所以是true

String a 指向的是“foo”对象的地址,String b指向的是另一个对象“foo”的地址,对比结果当然为false;
注意,创建的两个“foo”对象在内存中存储位置是不同的!虽然内容相同,但是存放的地方不同;
作者: 酋长第一    时间: 2014-8-12 11:43
A:==
                        a:基本类型 比较的是基本类型的值
                        b:引用类型 比较的是引用类型的地址值
B:equals()
                        只能比较引用类型。
                        默认比较地址值。
作者: 酋长第一    时间: 2014-8-12 11:47
==比较引用类型 比较的是他的地址,因为对象是new出来的,所以new的动作就是在堆中开辟了一个新的空间,所以两个new出来的对象地址值不可能相同,所以是false
作者: jw在路途    时间: 2014-8-12 11:48
==的作用:
                         比较基本类型:比较的是基本类型的值是否相同。
                         比较引用类型:比较的是引用类型的地址值是否相同。
equals();
public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。
                         默认情况下,Object类的equals比较的是地址值。
                         所以,如果你想比较成员变量的值,请重写该方法。

作者: 未名以律    时间: 2014-8-13 07:51
jw在路途 发表于 2014-8-12 11:48
==的作用:
                         比较基本类型:比较的是基本类型的值是否相同。
                    ...

很详细,谢谢




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