Re: [問題] this用法

看板java作者 (痞子軍團團長)時間11年前 (2014/03/25 14:38), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《broodstare (交給C4就對了)》之銘言: : 但第三種,"只寫了 this 就可以印出時間??(即呼叫toString這個method)" : 我不能理解為什麼,this可以呼叫toString,我也有試著去寫toString1,看會如何 : 但this都只印toString : 如果將toString給註解掉,this就會印出:SimpleTime@642b6fc7 (我自己理解這是 : 記憶體位置) : 這我想了好久都想不透為什麼this可以指到toString...也有爬文跟google,但查到的 : 大部份this用法都是在說: : this.member = local_member 這種用法 : 謝謝各位前輩orz 我覺得你的囧點不在 this 在你的 case 中「this」可以簡化視為 instance 的變數名稱 你在 class 外頭 new 一個 instance,意思也一樣 請看下面這兩個 class public class Empty { } public class Foo() { public String toString() { return "foo.toString()"; } } 執行的 code 長這樣: int i = 10; System.out.println(i); Empty empty = new Empty(); System.out.println(empty); Foo foo = new Foo(); System.out.println(foo); 為什麼 System.out.println(foo) 會印出「foo.toString()」 那是因為 http://docs.oracle.com/javase/6/docs/api/ java/io/PrintStream.html#println(java.lang.Object) 然後 http://docs.oracle.com/javase/6/docs/api/ java/lang/String.html#valueOf(java.lang.Object) (到這邊 Empty 跟 Foo 都一樣) 接著 Foo 又 override 掉 toString() 所以就會印出「foo.toString()」 Java 中的加號另外有哏,例如: int i = 1, j = 2; String empty = ""; System.out.println(i + j + empty); System.out.println(i + empty + j); 結局會不一樣 JSL 我懶得翻,但是基本上加號作用在一個 instance 上 應該就是視為呼叫他的 toString() 這樣干有比較瞭? -- 錢鍾書: 說出來的話 http://www.psmonkey.org 比不上不說出來的話 Java 版 cookcomic 版 只影射著說不出來的話 and more...... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.34.226.85

03/25 15:42, , 1F
謝謝! 我想我應該是有懂了 :)
03/25 15:42, 1F
文章代碼(AID): #1JCIHFaU (java)
討論串 (同標題文章)
本文引述了以下文章的的內容:
2
2
完整討論串 (本文為第 2 之 2 篇):
2
2
文章代碼(AID): #1JCIHFaU (java)