日期:2014-05-20 浏览次数:20834 次
public boolean equals(Object obj) {
if (obj instanceof Test) {
Test s = (Test) obj;// if(this.name.equals(obj.name)&&this.age==obj)
if (this.name.equals(s.name) && this.age == s.age)
return true;
}
return false;
}
------解决方案--------------------
(s1==s2)s1和s2是字符串对象,所以==不但要比较字符串内容还要比较引用也就是两个字符串的地址是否相同,
所以是false
(s1.equals(s2));比较的是两个字符串对象的值,所以是true
正确的类定义:
class Student{
String name;
int age;
public Student(String name,int age){
this.name=name;
this.age=age;
}
public boolean equals(Object obj, Object Student){
if(obj instanceof Student){//你的这里少了个“}”
Student s=(Student)obj;
if(this.name.equals(s.name)&&this.age==s.age)//age是原始类型,没有equals方法
return true;
}
return false;
}
}//你的在这里也少了个“}”
------解决方案--------------------
关于equals:
package suntest;
/*
* 如果两个对象用对象的equals()方法比较是相等的,
* 那么它们调用hashCode()方法必须生成同样的整数值。
* 例如下面的代码
* */
public class HashCodeTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String s1 = new String("Hello");
String s2 = new String("Hello");
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
Integer i1 = new Integer(10);
Integer i2 = new Integer(10);
System.out.println(i1.hashCode());
System.out.println(i2.hashCode());
}
}
------解决方案--------------------