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/