參考鏈接: Java程序的輸出| 重寫Override
1.toString()就是是重寫,對于一般的對象來說都會有這個方法,其實這個方法的目的,主要就是將對象按字符串的方式輸出出來:打個比方,比如一個People類,里邊有name,age這兩個屬性,?
如果你People p = new People(); p.toString(); 這么做的話,默認輸出就是一個內存地址。 那么你會想到重寫ToString();這個方法,按自己的方式去輸出。 比如將toString的方法體改為:return p.name+p.age; 這個時候toString輸出的東西就是People這個類的姓名和年齡了。?
重寫toString() 只會對類生效,并不能字符串生效; 例如:?
? public class pratise {
? ? ? String num="aaaa";
? ? ? public String toString(){
? ? ? ? ? return num;
? ? ? }
? ? ? public static void main(String[] args){
? ? ? ? String s1="111";
? ? ? ? System.out.println(s1.toString());?
? ? ? ? //輸出111 而并非aaaa;
? ? ? }
}?
重寫toString()對類生效 , 例如:?
package com.stu;
?
?
?
//用toString 重寫一個類
?
public class Car {
?
? ?//成員變量
? ? private String carNo;
?
? ? private String carName;
?
? ? private String color;
?
? ? private double price;??
?
? ?//有參構造函數
?
? ? Car(String carNo,String carName,String color,double price){
?
? ? ? ? this.carNo=carNo;
?
? ? ? ? this.carName=carName;
?
? ? ? ? this.color=color;
?
? ? ? ? this.price=price;
? ? }
?
? ? //get set方法
?
? ? public String getCarNo(){
?
? ? ? ? return carNo;
?
? ? }
? ? public void setCarNo(String carNo){
?
? ? ? ? this.carNo=carNo;
?
? ? }
? ? public String getCarName() {
?
? ? ? ? return carName;
?
? ? }
? ? public void setCarName(String carName) {
?
? ? ? ? this.carName = carName;
?
? ? }
? ? public String getColor() {
?
? ? ? ? return color;
?
? ? }
? ? public void setColor(String color) {
?
? ? ? ? this.color = color;
?
? ? }
? ? public double getPrice() {
?
? ? ? ? return price;
?
? ? }
? ? public void setPrice(double price) {
?
? ? ? ? this.price = price;
?
? ? }
? ? //重寫toString();
? ? public String toString(){
?
? ? ? ? return "這個汽車名叫 "+carName+",型號是 "+carNo+",汽車顏色 "+color+",價格 "+price;
?
? ? }
? ? public static void main(String[] args){
?
? ? ? ?//創建一個Car的對象
?
? ? ? ? Car myCar=new Car("蘇A 4995","長安汽車","灰藍色",70000.00);? ?//類名開頭字母大寫
?
? ? ? ? System.out.println(myCar.toString());
?
? ? }
?
}
?
輸出結果:?
?
假如不對toString()進行重寫則 輸出結果:?
?com.stu.Car@2542880d? ==> 類名 + “@” +hashCode值?
2.為什么要重寫toString()方法?
在Object類里面定義toString()方法的時候返回的對象的哈希code碼,這個hashcode碼不能簡單明了的表示出對象的屬性。所以要重寫toString()方法。 當需要將一個對象輸出到顯示器時,通常要調用他的toString()方法,將對象的內容轉換為字符串.java中的所有類默認都有一個toString()方法。 默認情況下 System.out.println(對象名)或者System.out.println(對象名.toString())輸出的是此對象的類名和此對象對應內存的首地址如果想自定義輸出信息必須重寫toString()方法。?
注意事項:?
①.必須被聲明為public?
②.返回類型為String?
③.方法的名稱必須為toString,且無參數?
④.方法體中不要使用輸出方法System.out.println()