protected int x, y;
public boolean equals
(Object o
) { if (o == null) return false;
if (o.
getClass() != Point.
class) return false; return other.x == x && other.y == y;
}
public int hashCode() {
return x * 31 + y;
}
}
class BuggyInit {
public static void main
(String[] args
) { a.x = 3;
a.y = 5;
System.
out.
println("a.x == b.x ? " + (a.
x == b.
x)); System.
out.
println("a.y == b.y ? " + (a.
y == b.
y)); System.
out.
println("a == b ? " + a.
equals(b
)); System.
out.
println("b == a ? " + b.
equals(a
)); }
}
Y2xhc3MgUG9pbnQgewoJcHJvdGVjdGVkIGludCB4LCB5OwoJCglwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG8pIHsKCQlpZiAobyA9PSBudWxsKSByZXR1cm4gZmFsc2U7CgkJaWYgKG8uZ2V0Q2xhc3MoKSAhPSBQb2ludC5jbGFzcykgcmV0dXJuIGZhbHNlOwoJCVBvaW50IG90aGVyID0gKFBvaW50KW87CgkJcmV0dXJuIG90aGVyLnggPT0geCAmJiBvdGhlci55ID09IHk7Cgl9CgkKCXB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CgkJcmV0dXJuIHggKiAzMSArIHk7Cgl9Cn0KCmNsYXNzIEJ1Z2d5SW5pdCB7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgewoJCVBvaW50IGEgPSBuZXcgUG9pbnQoKTsKCQlhLnggPSAzOwoJCWEueSA9IDU7CgkJCgkJUG9pbnQgYiA9IG5ldyBQb2ludCgpIHsgeyB4ID0gMzsgeSA9IDU7IH0gfTsKCQkKCQlTeXN0ZW0ub3V0LnByaW50bG4oImEueCA9PSBiLnggPyAiICsgKGEueCA9PSBiLngpKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oImEueSA9PSBiLnkgPyAiICsgKGEueSA9PSBiLnkpKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oImEgPT0gYiA/ICIgKyBhLmVxdWFscyhiKSk7CgkJU3lzdGVtLm91dC5wcmludGxuKCJiID09IGEgPyAiICsgYi5lcXVhbHMoYSkpOwoJfQp9