import java.util.Objects;
class Person {
int age;
Person
(String name,
int age
) { this.name = name;
this.age = age;
}
@Override
public boolean equals
(Object obj
) { if (this == obj) return true; // Check reference equality
if (obj == null || getClass() != obj.getClass()) return false; // Check type
Person person = (Person) obj;
return age == person.age && name.equals(person.name); // Check logical equality
}
return this.name+" "+this.age;
}
public static void main
(String[] args
) { Person p1 = new Person("Alice", 25);
Person p2 = new Person("Alice", 25);
Person p3 = new Person("Bob", 30);
System.
out.
println(p1.
equals(p2
)); // true (same name and age) System.
out.
println(p1.
equals(p3
)); // false (different name and age)
System.
out.
println(p1
); // true (same content) System.
out.
println(p3
); // false (different content) }
}
aW1wb3J0IGphdmEudXRpbC5PYmplY3RzOwoKY2xhc3MgUGVyc29uIHsKICAgIFN0cmluZyBuYW1lOwogICAgaW50IGFnZTsKCiAgICBQZXJzb24oU3RyaW5nIG5hbWUsIGludCBhZ2UpIHsKICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOwogICAgICAgIHRoaXMuYWdlID0gYWdlOwogICAgfQoKICAgIEBPdmVycmlkZQogICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvYmopIHsKICAgICAgICBpZiAodGhpcyA9PSBvYmopIHJldHVybiB0cnVlOyAvLyBDaGVjayByZWZlcmVuY2UgZXF1YWxpdHkKICAgICAgICBpZiAob2JqID09IG51bGwgfHwgZ2V0Q2xhc3MoKSAhPSBvYmouZ2V0Q2xhc3MoKSkgcmV0dXJuIGZhbHNlOyAvLyBDaGVjayB0eXBlCiAgICAgICAgUGVyc29uIHBlcnNvbiA9IChQZXJzb24pIG9iajsKICAgICAgICByZXR1cm4gYWdlID09IHBlcnNvbi5hZ2UgJiYgbmFtZS5lcXVhbHMocGVyc29uLm5hbWUpOyAvLyBDaGVjayBsb2dpY2FsIGVxdWFsaXR5CiAgICB9CiAgICAKICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CiAgICAJcmV0dXJuIHRoaXMubmFtZSsiICIrdGhpcy5hZ2U7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIFBlcnNvbiBwMSA9IG5ldyBQZXJzb24oIkFsaWNlIiwgMjUpOwogICAgICAgIFBlcnNvbiBwMiA9IG5ldyBQZXJzb24oIkFsaWNlIiwgMjUpOwogICAgICAgIFBlcnNvbiBwMyA9IG5ldyBQZXJzb24oIkJvYiIsIDMwKTsKCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHAxLmVxdWFscyhwMikpOyAvLyB0cnVlIChzYW1lIG5hbWUgYW5kIGFnZSkKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocDEuZXF1YWxzKHAzKSk7IC8vIGZhbHNlIChkaWZmZXJlbnQgbmFtZSBhbmQgYWdlKQoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocDEpOyAvLyB0cnVlIChzYW1lIGNvbnRlbnQpCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHAzKTsgLy8gZmFsc2UgKGRpZmZlcmVudCBjb250ZW50KQogICAgfQp9Cg==