1. 程式人生 > >JAVA的toString方法的一個小例子

JAVA的toString方法的一個小例子

為什麽 str mage void code span 例子 image 連接

Object是一個抽象類,他有很有方法,其中的toString方法是我們常見的一個方法,我們可以看這段代碼

package com.com.day1;

public class ToStringTest {
static int i=1;
public static void main(String args[]){
System.out.println("love "+new ToStringTest());
ToStringTest a=new ToStringTest();
a.i++;
System.out.println("me "+a.i);

}
public String toString(){
System.out.print("I ");
return "java";
}
}

其執行結果為:

技術分享圖片

那麽為什麽會出現上面的運行結果?

首先我們可以在JAVA API文檔中查找Object類裏面的toString方法;

技術分享圖片

看不懂了?沒關系,我們來實現一下:

package com.com.day1;

public class ToStringTest {
    static int i=1;
    public static void main(String args[]){
        System.out.println(
new ToStringTest()); } }

技術分享圖片

總結:當我們直接調用對象的時候會輸出 類名@對象的哈希碼

再來一個測試

package com.com.day1;

public class ToStringTest {
    static int i=1;
    public static void main(String args[]){
        System.out.println(new ToStringTest());
    }
    public String toString(){
        return "java";
    }
}

技術分享圖片

總結:當我們重寫toString方法時會return返回對應的字符串

再來一個測試

package com.com.day1;

public class ToStringTest {
    static int i=1;
    public static void main(String args[]){
        System.out.println("love "+new ToStringTest());
    }
    public String toString(){
        return "java";
    }
}

技術分享圖片

總結:toString方法可以通過+和其他類型連接起來而且是轉為字符串類型連接

這樣我們就有頭緒了,再看這個測試

package com.com.day1;

public class ToStringTest {
    static int i=1;
    public static void main(String args[]){
        System.out.println("love "+new ToStringTest());
    }
    public String toString(){
        System.out.print("I ");
        return "java";
    }
}

技術分享圖片

總結:在輸出之前會調用toString方法,解析這個方法時會先輸出 I 之後再輸出 love java

package com.com.day1;

public class ToStringTest {
    static int i=1;
    public static void main(String args[]){
        ToStringTest a=new ToStringTest();
        a.i++;
        System.out.println("me "+a.i);
    }
    public String toString(){
        System.out.print("I ");
        return "java";
    }
}

技術分享圖片

有個疑問?為何這個地方ToStringTest a=new ToStringTest()沒有調用這個方法?

總結:在用System.out.println();z輸出該類的時候(有點想c++cout的重載),會調用toString函數。將該類與String類拼接時也會調用該類。

JAVA的toString方法的一個小例子