package day02.exe;
/**
* 重寫toString()和equals()方法
* 一般在自己定義的類中需要重寫這兩個方法.
* @author Administrator
*
*/
public class Student {
private String name;
private int age;
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
/* 重寫toString()沒有特别的原則
* 盡量反映對象的屬性.
* (non-Javadoc)
* @see java.lang.Object#toString()
*/
public String toString(){
return "name:"+name+",age:"+age;
}
public boolean equals(Object object){
if(object==null){
return false;
}
if(this==object){
return true;
}
if(object instanceof Student){
Student s = (Student)object;
/*
* String類中以重寫過equals()方法
* 這裡可以直接調用String的toString()方法.
*/
return this.name.equals(s.name) && this.age==s.age;
}
return false;
}
}
package day02.exe;
/**
* 對重寫的toString()和equals()方法進行測試
* @author Administrator
*
*/
public class Exe03 {
public static void main(String[] args) {
/*
* 重寫過的toString()方法可以輸出學生的姓名
* 和年齡資訊.
*/
Student s1 = new Student("jack",23);
Student s2 = new Student("jack",23);
Student s3 = new Student("rose",22);
Student s4 = new Student("jack",22);
Student s5 = new Student("rose",23);
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4);
System.out.println(s5);
System.out.println("********************");
/*
* 輸出結果如下:
* name:jack,age:23
* name:jack,age:23
* name:rose,age:22
* name:jack,age:22
* name:rose,age:23
* ********************
* s1==s2:true
* s1==s3:false
* s1==s4:false
* s1==s5:false
* 隻有當姓名和年齡都相等時才表示
* 是同一個人(實際上姓名和年齡都
* 相等也不能保證是同一個人,這裡
* 隻是為了示範equals()的重寫).
*/
System.out.println("s1==s2:"+s1.equals(s2));
System.out.println("s1==s3:"+s1.equals(s3));
System.out.println("s1==s4:"+s1.equals(s4));
System.out.println("s1==s5:"+s1.equals(s5));
}
}