26Object類的toString方法(應用)
阿新 • • 發佈:2021-09-19
1 Object類的toString方法(應用)
-
Object類概述
- Object 是類層次結構的根,每個類都可以將 Object 作為超類。所有類都直接或者間接的繼承自該類,
換句話說,該類所具備的方法,所有類都會有一份
- Object 是類層次結構的根,每個類都可以將 Object 作為超類。所有類都直接或者間接的繼承自該類,
-
檢視方法原始碼的方式
- 選中方法,按下Ctrl + B
-
重寫toString方法的方式
-
- Alt + Insert 選擇toString
- 在類的空白區域,右鍵 -> Generate -> 選擇toString
-
-
toString方法的作用 :
- 以良好的格式,更方便的展示物件中的屬性值
示例程式碼:
public class Student extends Object { private String name; private int age; public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
/* Object 是類層次結構的根,每個類都可以將 Object 作為超類。所有類都直接或者間接的繼承自該類 看方法原始碼:選中方法,按下Ctrl+B 建議所有子類重寫此方法:toString() 怎麼重寫呢?自動生成即可 Alt+Insert */ public class ObjectDemo { public static void main(String[] args) { Student s = new Student(); s.setName("林青霞"); s.setAge(30); System.out.println(s); //com.itheima_01.Student@3f3afe78 System.out.println(s.toString()); //com.itheima_01.Student@3f3afe78 /* public void println(Object x) { //x = s; String s = String.valueOf(x); synchronized (this) { print(s); newLine(); } } public static String valueOf(Object obj) { //obj = x; return (obj == null) ? "null" : obj.toString(); } public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } */ } }
2 Object類的equals方法(應用)
-
equals方法的作用
- 用於物件之間的比較,返回true和false的結果
- 舉例:s1.equals(s2); s1和s2是兩個物件
-
重寫equals方法的場景
- 不希望比較物件的地址值,想要結合物件屬性進行比較的時候。
-
重寫equals方法的方式
-
-
alt + insert 選擇equals() and hashCode(),IntelliJ Default,一路next,finish即可
-
在類的空白區域,右鍵 -> Generate -> 選擇equals() and hashCode(),後面的同上。
-
-
示例程式碼:
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public boolean equals(Object o) {
//this -- s1
//o -- s2
//比較地址是否相同
if (this == o) return true;
//判斷引數是否為空,判斷是否來自於同一個類
if (o == null || getClass() != o.getClass()) return false;
//向下轉型
Student student = (Student) o; //student -- s2
//比較年齡是否相同
if (age != student.age) return false;
//比較姓名是否相同
return name != null ? name.equals(student.name) : student.name == null;
}
}
測試:
/*
測試類
public boolean equals(Object obj):指示一些其他物件是否等於此
*/
public class ObjectDemo {
public static void main(String[] args) {
Student s1 = new Student();
s1.setName("林青霞");
s1.setAge(30);
Student s2 = new Student();
s2.setName("林青霞");
s2.setAge(30);
//需求:比較兩個物件的內容是否相同(不能進行比較)
// System.out.println(s1 == s2);
//需要重寫equals方法
System.out.println(s1.equals(s2));
/*
public boolean equals(Object obj) {
//this -- s1
//obj -- s2
return (this == obj);
}
*/
}
}