Object类—复写equals方法,hashCode方法,toString方法
生活随笔
收集整理的這篇文章主要介紹了
Object类—复写equals方法,hashCode方法,toString方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Object:所有類的根類。
Object是不斷抽取而來,具備著所有對象都具備的共性內容。
class Person extends Object {private int age;Person(int age) {this.age = age;}/* 老方法:比較Person的年齡。是否是同齡人 */// public boolean compare(Person p) { return this.age ==// p.age; }/* 新方法:一般都會覆蓋此方法,根據對象的特有內容,建立判斷對象是否相同的依據。(常用復寫equals) */public boolean equals(Object obj)// Object obj = p2;隱藏著向上轉型{// 健壯性判斷if (!(obj instanceof Person)) {throw new ClassCastException("類型錯誤");}Person p = (Person) obj;// 向下轉型,否則無法調用Person的屬性agereturn this.age == p.age;}/* 復寫hashcode() */// public int hashCode() {// return age;// }/* 復寫toString() */// public String toString() {// return "Person:" + "age=" + age;// } }class ObjectDemo {public static void main(String[] args) {Person p1 = new Person(60);Person p2 = new Person(20);// System.out.println(p1.equals(p2));// System.out.println(p1);// 默認調用p1.toString// System.out.println(Integer.toHexString(p1.hashCode()));/* 是不是同一個類 */// Class clazz1 = p1.getClass();// Class clazz2 = p2.getClass();// System.out.println(clazz1 == clazz2);// System.out.println(clazz1.getName());// Person// System.out.println(p1.toString());// Person@61de33// System.out.println(p1.getClass().getName() + "$" +// Integer.toHexString(p1.hashCode()));// Person$61de33// System.out.println("==:" + (p1 == p2));// System.out.println("equals:" + p1.equals(p2)); //// equals()方法,比較的是地址值。對于非字符串變量,equals比較的是內存的首地址,這時候和==是一樣的,即比較兩邊指向的是不是同一個對象。} }
class Person extends Object {private int age;Person(int age) {this.age = age;}/* 老方法:比較Person的年齡。是否是同齡人 */// public boolean compare(Person p) { return this.age ==// p.age; }/* 新方法:一般都會覆蓋此方法,根據對象的特有內容,建立判斷對象是否相同的依據。(常用復寫equals) */public boolean equals(Object obj)// Object obj = p2;隱藏著向上轉型{// 健壯性判斷if (!(obj instanceof Person)) {throw new ClassCastException("類型錯誤");}Person p = (Person) obj;// 向下轉型,否則無法調用Person的屬性agereturn this.age == p.age;}/* 復寫hashcode() */// public int hashCode() {// return age;// }/* 復寫toString() */// public String toString() {// return "Person:" + "age=" + age;// } }class ObjectDemo {public static void main(String[] args) {Person p1 = new Person(60);Person p2 = new Person(20);// System.out.println(p1.equals(p2));// System.out.println(p1);// 默認調用p1.toString// System.out.println(Integer.toHexString(p1.hashCode()));/* 是不是同一個類 */// Class clazz1 = p1.getClass();// Class clazz2 = p2.getClass();// System.out.println(clazz1 == clazz2);// System.out.println(clazz1.getName());// Person// System.out.println(p1.toString());// Person@61de33// System.out.println(p1.getClass().getName() + "$" +// Integer.toHexString(p1.hashCode()));// Person$61de33// System.out.println("==:" + (p1 == p2));// System.out.println("equals:" + p1.equals(p2)); //// equals()方法,比較的是地址值。對于非字符串變量,equals比較的是內存的首地址,這時候和==是一樣的,即比較兩邊指向的是不是同一個對象。} }
?
轉載于:https://www.cnblogs.com/kkkky/p/6572660.html
總結
以上是生活随笔為你收集整理的Object类—复写equals方法,hashCode方法,toString方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何修改容器的一些参数
- 下一篇: MySQL注射绕过技巧(三)