读《C陷阱与缺陷》的时候,我记得清清楚楚:书中指明一点,C语言指针的赋值与比较。
没想到刚才Java中遇到了。
在Java中:
String str1 = new String("hello");
String str2 = new String("hello");
str1 == str2; // 判断两个指针是否指向同一对象
str1.equals(str2); // 判断两个字符串对象的内容是否相等
然而我写了一个新类:
class CustomClass
{
private int v1;
private int v2;
public CustomClass(int v1, int v2)
{
this.v1 = v1;
this.v2 = v2;
}
public boolean equlas(CustomClass xObj)
{
if (v1 == xObj.getV1() && v2 == xObj.getV2())
{
return true;
}
else
{
return false;
}
}
}
这样是可以编译通过的,但是我这个方法equals不小心打成了equlas。
而你创建两个对象:
CustomClass one = new CustomClass(1, 2);
CustomClass two = new CustomClass(1, 2);
System.out.println(one.equals(two));
就算两个对象的v1和v2的值是一样的,结果还是一直为false,因为方法名写错了...