Object类的toString方法
生活随笔
收集整理的這篇文章主要介紹了
Object类的toString方法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
package com.learn.demo01.Object;import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;/*java.lang.Object類 Object 是類層次結(jié)構(gòu)的根(父)類。每個類(Person,Student...)都使用 Object 作為超(父)類。所有對象(包括數(shù)組)都實(shí)現(xiàn)這個類的方法。*/
public class Demo01ToString{public static void main(String[] args) {/*Person類默認(rèn)繼承了Object類,所以可以使用Object類中的toString方法String toString() 返回該對象的字符串表示。*/Person p = new Person("張三",18);String s = p.toString();System.out.println(s);//com.learn.demo01.Object.Person@75412c2f | abc | Person{name=張三 ,age=18}//直接打印對象的名字,其實(shí)就是調(diào)用對象的toString p=p.toString();System.out.println(p);//com.learn.demo01.Object.Person@5f150435 | abc | Person{name=張三 ,age=18}//看一個類是否重寫了toString,直接打印這個類的對象即可,如果沒有重寫toString方法那么打印的是對象的地址值Random r = new Random();System.out.println(r);//java.util.Random@3f3afe78 沒有重寫toString方法Scanner sc = new Scanner(System.in);System.out.println(sc);//java.util.Scanner[delimiters=\p{javaWhitespace}+.. 重寫toString方法ArrayList<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);System.out.println(list);//[1, 2, 3] 重寫toString方法}
}
package com.learn.demo01.Object;import java.util.Objects;public class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}/*直接打印對象的地址值沒有意義,需要重寫Object類中的toString方法打印對象的屬性(name,age)*//*@Overridepublic String toString() {//return "abc";return "Person{name="+name+" ,age="+age+"}";}*//*@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}';}*//*Object類的equals方法,默認(rèn)比較的是兩個對象的地址值,沒有意義所以我們要重寫equals方法,比較兩個對象的屬性(name,age)問題:隱含著一個多態(tài)多態(tài)的弊端:無法使用子類特有的內(nèi)容(屬性和方法)Object obj = p2 = new Person("古力娜扎",19);解決:可以使用向下轉(zhuǎn)型(強(qiáng)轉(zhuǎn))把obj類型轉(zhuǎn)換為Person*//*@Overridepublic boolean equals(Object obj) {//增加一個判斷,傳遞的參數(shù)obj如果是this本身,直接返回true,提高程序的效率if(obj==this){return true;}//增加一個判斷,傳遞的參數(shù)obj如果是null,直接返回false,提高程序的效率if(obj==null){return false;}//增加一個判斷,防止類型轉(zhuǎn)換一次ClassCastExceptionif(obj instanceof Person){//使用向下轉(zhuǎn)型,把obj轉(zhuǎn)換為Person類型Person p = (Person)obj;//比較兩個對象的屬性,一個對象是this(p1),一個對象是p(obj->p2)boolean b = this.name.equals(p.name) && this.age==p.age;return b;}//不是Person類型直接返回falsereturn false;}*/@Overridepublic boolean equals(Object o) {if (this == o) return true;//getClass() != o.getClass() 使用反射技術(shù),判斷o是否是Person類型 等效于 obj instanceof Personif (o == null || getClass() != o.getClass()) return false;Person person = (Person) o;return age == person.age &&Objects.equals(name, person.name);}@Overridepublic int hashCode() {return Objects.hash(name, 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;}
}
?
總結(jié)
以上是生活随笔為你收集整理的Object类的toString方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数组作为方法返回值_返回地址
- 下一篇: 重写Object类的equals方法