java直接輸出對象默認調用toString()方法


最近在學習java的過程中遇到了一段讓人頭疼的代碼,好在將其搞懂了。

示例如下:

 1 public class ToStringText {
 2     static int i=1;
 3     
 4     public static void main(String[] args) {
 5         System.out.println("love " +new ToStringText());
 6         
 7         ToStringText a=new ToStringText();
 8         a.i++;
 9         System.out.println("me "+a.i);
10     }
11     public String toString() {
12         System.out.println("I ");
13         return "java ";
14     }
15 }

輸出結果如下:

I love java
me 2

我的思路如下:

  當程序使用System.out.println()時,程序會先執行new ToStringText(),該對象會調用對應的自帶的toString()方法,但是程序中已定義了一種toString()方法,那就先調用該方法。對函數進行了重寫,該方法中先輸出 I ,讓后將 java 返回給new ToStringText(),然后繼續輸出 love ,輸出toString()方法中的返回值,這樣就輸出了 I love java 這句話。因為i是靜態變量,所以a.i++可以調用對應的值,隨后再輸出 me 2.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM