[code]
class objectequals {
static int maxelements;
objectequals(int maxelements) {
this.maxelements = maxelements;
}
public static void main(string[] args) {
objectequals a = new objectequals(100);
objectequals b = new objectequals(100);
if(a.equals(b))
system.out.println("objects have the same values");
else
system.out.println("objects have different values");
}
}
[/code]
以上的输出是 different ,为什么? 当然如果比较 "==" ,更是 different 了。
nod,其实equals并非真正的比较value,在这里equals和==其实都是比较引用。
但是我们经常认为equals是比较值,有两个原因:
1。原始类型的数据比如string,int,用equals实际是比较值。
2。sun实际上是鼓励大家通过重写equals来使之的语义是比较值。但是我们往往很少重写。
闽公网安备 35060202000074号