-两个对象值相同(xequals(y) == true)但却可有不同的hash code这句话应该是对的吧
2012-05-19 22:46
387 查看
答:对的,相等性比较和hashCode的计算依据可以由类的编写者确定
(此题的答案,各个论坛上五花八门,我做了以下三个测试,说明很多问题)
一://hashCode相同 .equals返回false
public class TestEqual {
public static void main(String[] args) {
Person per1 = new Person(3);
Person per2 = new Person(4);
System.out.println(per1.equals(per2));
//hashCode相同 per1.equals(per2)返回false
}
}
class Person{
public int age;
public Person(int age) {
this.age = age;
}
public Person() {
}
public boolean equals(Object arg0) {
return false;
}
@Override
public int hashCode() {
return 4;
}
}
//以上返回false
二://hashCode值是不同的,equals返回true
public class TestEqual {
public static void main(String[] args) {
Person per1 = new Person(3);
Person per2 = new Person(4);
System.out.println(per1.equals(per2));
//hashCode值是不同的,per1.equals(per2)返回true
}
}
class Person{
public int age;
public Person(int age) {
this.age = age;
}
public Person() {
}
public boolean equals(Object arg0) {
return true;
}
@Override
public int hashCode() {
Random ran = new Random();
return ran.nextInt();
}
}
//以上返回true
三://相同的对象,equals返回false。
public class TestEqual {
public static void main(String[] args) {
Person per1 = new Person(3);
Person per2 = per1;
System.out.println(per1.equals(per2));//false
System.out.println(per1.equals(per1));//false
System.out.println(per1==per2);//true
//相同的对象,per1.equals(per2)返回false。
}
}
class Person{
public int age;
public Person(int age) {
this.age = age;
}
public Person() {
}
public boolean equals(Object arg0) {
return false;
}
public int hashCode() {
Random ran = new Random();
return ran.nextInt();
}
}
(此题的答案,各个论坛上五花八门,我做了以下三个测试,说明很多问题)
一://hashCode相同 .equals返回false
public class TestEqual {
public static void main(String[] args) {
Person per1 = new Person(3);
Person per2 = new Person(4);
System.out.println(per1.equals(per2));
//hashCode相同 per1.equals(per2)返回false
}
}
class Person{
public int age;
public Person(int age) {
this.age = age;
}
public Person() {
}
public boolean equals(Object arg0) {
return false;
}
@Override
public int hashCode() {
return 4;
}
}
//以上返回false
二://hashCode值是不同的,equals返回true
public class TestEqual {
public static void main(String[] args) {
Person per1 = new Person(3);
Person per2 = new Person(4);
System.out.println(per1.equals(per2));
//hashCode值是不同的,per1.equals(per2)返回true
}
}
class Person{
public int age;
public Person(int age) {
this.age = age;
}
public Person() {
}
public boolean equals(Object arg0) {
return true;
}
@Override
public int hashCode() {
Random ran = new Random();
return ran.nextInt();
}
}
//以上返回true
三://相同的对象,equals返回false。
public class TestEqual {
public static void main(String[] args) {
Person per1 = new Person(3);
Person per2 = per1;
System.out.println(per1.equals(per2));//false
System.out.println(per1.equals(per1));//false
System.out.println(per1==per2);//true
//相同的对象,per1.equals(per2)返回false。
}
}
class Person{
public int age;
public Person(int age) {
this.age = age;
}
public Person() {
}
public boolean equals(Object arg0) {
return false;
}
public int hashCode() {
Random ran = new Random();
return ran.nextInt();
}
}
相关文章推荐
- 两个对象值相同 (x.equals(y) == true) ,但可有不同的 hash code ,这句话对不对?
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
- 面试题:两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对
- 【Java面试题】41 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对
- Java - 两个对象值相同(x.equals(y) == true),但却可以有不同的hash code,这句话对不对?
- 两个对象值相同(x.equals(y)==true),但却可有不同的hash code,这句话对不对
- 两个对像值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
- 两个对象值相同(x.equals(y) == true),但却可有不同的hashCode,这句话对不对?
- (面试题)两个对象值相同 (x.equals(y) == true) ,但却可有不同的 hash code ,这 句话对不对?
- .两个对象值相(x.equals(y)==true),但却可有不同的hash code,这句话对不对?
- (面试题)两个对象值相同 (x.equals(y) == true) ,但却可有不同的 hash code ,这 句话对不对