Java Equals == diffenrece

== 是裸地 直接比较两个变量值是否相同,例如两个对象,存放的是地址值,则比较地址值是否相同,也即是否指向同一对象
.Equals() 方法是比较两个对象指向的地址空间内容是否相同。

经常犯的错误就是两个字符串对象,经常用==比较内容

其实正确做法是用Equals比较内容

String a=new String(“foo”);
String b=new String(“foo”);
比较两个字符串内容是否相同,用Equals方法。而C++

string a(“abc”), b(“abc”), 则直接用a==b 就可以比较字符串内容,没有Equals这种问题,是因为有一个函数专门转化为比较字符串内容是否相同了。

而java可能没有做这一点,因此需要用Equals来比较。

其实cpp string也是一样,比较== comapre相当于 == Equals分别比较地址值和字符串内容,只是==处理两个字符串对象的时候,会自动比较内容。但是不是成员函数。
并且string一般不用new,也不用指针,因此比较好做。

cpp string == 有一个顺序关系,他会自动调用==
http://www.cplusplus.com/reference/string/string/operators/

Posted by richard爱闹 - 4月 3 2015
如需转载,请注明: 本文来自 Richard