`

两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?

 
阅读更多
package test;

/**
 * 解答:两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
 * 这句话是对的,因为equals是可以覆盖的,所以可以使(x.equals(y) == true),且x,y有不同hash code
 */
public class EqualAndHashCode {
	
	public static void main(String[] args) {
		A a1 = new A(1);
		A a2 = a1;//new A(1);
		boolean flag1 = a1==a2;
		System.out.println(a1.equals(a2)+"    "+flag1);
		System.out.println(a1.hashCode());
		System.out.println(a2.hashCode());
		
		B b1 = new B(1);
		B b2 = new B(1);
		boolean flag2 = b1==b2;
		System.out.println(b1.equals(b2)+"    "+flag2);
		System.out.println(b1.hashCode());
		System.out.println(b2.hashCode());
	}

}

class A{
	int a;
	public A(int i){
		this.a = i;
	}
}
class B{
	int b;
	public B(int i){
		this.b = i;
	}
	@Override
	public boolean equals(Object obj) {
		if(this.b==((B)obj).b)return true;
		else return false;
	}
}


不用equal而用“==”才不对。
分享到:
评论

相关推荐

    2013年最全的JAVA面试题集,内部资料,绝对能帮助到你,不要后悔哦。

    两个对象值相同(x.equals(y) ==true),但却可有不同的hash code,这句话对不对?(等级1级) 15. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递...

    java面试题,java基础,javaweb,spring,springmvc,mybatis等

    2. 两个对象值相同(x.equals(y) == true),但却可有不同的 hash code,这句话对不对?对的,因为 hash code 只是对象的标识符。 3. Object 类中定义的方法有:clone()、equals()、finalize()、getClass()、hashCode...

    java面试题.docx

    12. 两个对象值相同(x.equals(y)==true),但却可有不同的hash code,这句话对不对?为什么? 答案:对 解释:两个对象的值相同,但它们的hash code可以不同。这是因为hash code是对象的唯一标识,而不是对象的...

    java笔试题

    16、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 17、是否可以继承String类? 18、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,...

    net学习笔记及其他代码应用

    44.两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 答:不对,有相同的hash code。 45.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? 答:switch(expr1...

    变态级JAVA程序员面试32问

     第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?  第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里...

    变态级JAVA程序员面试32问(附答案)

    29. 两个对象值相同(x.equals(y) == true),但却可有不同的 hash code,这句话对不对? 正确,两个对象值相同,但却可有不同的 hash code。 30. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的...

    超级有影响力霸气的Java面试题大全文档

    在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。...

    Java面试题集(2017修订版).doc

    12. 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? - 正确,虽然两个对象值相等,但它们的哈希码可能不同,特别是在多线程环境中或使用了不同的哈希算法时。 13. 写出Object类中...

    JAVA程序员面试32问

    #### 第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的 hash code,这句话对不对? - 如果`x.equals(y)`为`true`,根据`equals()`和`hashCode()`的一致性原则,它们应当具有相同的哈希码。但是,...

    Java常见面试题集及答案.docx

    29. **两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?** - 对,两个对象可能通过equals()判断相等,但由于哈希码是基于对象的内部状态计算的,所以它们的哈希码可能不同。 30. **...

    java面试宝典2012版.pdf

    69、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的...

    JAVA相关的面试大全

    两个对象值相同(x.equals(y)==true),但却可有不同的hash code,这句话对不对? - 如果`x.equals(y)`为真,则`x`和`y`应当具有相同的哈希码。 - 实现`equals()`方法的同时,应相应地实现`hashCode()`方法。 #### ...

    java 面试题 总结

    28、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。 public class ThreadTest1{ private int j; public static ...

    java面试题总结

    两个对象值相同(x.equals(y)==true),但却可有不同的hashcode,这句话对不对? - **不对**:如果`x.equals(y)`为真,则`x`和`y`应该具有相同的`hashCode`。 #### 47. 当一个对象被当作参数传递到一个方法后,此...

Global site tag (gtag.js) - Google Analytics