看板 java 關於我們 聯絡資訊
不好意思唷 我有個疑問,很多人都說 宣告 String str = new String("hello"); 這樣的話str是一個Class 可是呀 為什麼可以把類別直接print出來 不是至少應該要印出str.xxx變數之類的嗎? 不好意思 我正在學class這段 有這個疑問 希望有人能幫我解答一下 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.0.214.190
TonyQ:所有的類別你都可以直接print出來啊,他會call toString() 05/01 15:29
FreedomMax:那假如說裡面有很多變數 他是每個變數都會印出來嗎 05/01 16:50
FreedomMax:我剛剛試著println一個class 可是顯示的是XXX@152b6611 05/01 17:16
FreedomMax:這應該是印出Class的位置吧 05/01 17:19
kaomark:每個class都會從java.lang.Object 繼承到toString() 05/01 17:37
kaomark:那個toString()會生出可以代表這個object的String 05/01 17:38
kaomark:如果你要它print 能直接印出物件內容之類的String() 05/01 17:42
kaomark:就幫它override一個toString()吧 05/01 17:44
kaomark: 多打了括號▔ 05/01 17:48
FreedomMax:所以String 是在裡面toString 裡面的某個字元陣列嗎 05/01 18:33
kaomark:我好像弄錯你想問什麼了 @@ 05/01 19:15
kaomark:"為何print()知道String要怎麼印出來" 是這樣嗎? 05/01 19:18
FreedomMax:沒錯 大概就是照樣 05/01 19:56
FreedomMax:還有就是他把我存的字串放到哪裡了 查過API 05/01 19:58
tomap41017:str是一個class String的variable才對吧~@@ 05/01 21:19
tomap41017:至於字串存哪是String這個class該煩惱的,不是使用者 05/01 21:20
FreedomMax:String str這不是宣告str為String這種類別的意思嗎 05/01 22:22
FreedomMax:所以是說str是String裡的東西嗎 05/01 22:24
james732:str是一個String類別的物件 05/01 22:27
FreedomMax:那println怎麼能印出一個類別呢? 05/01 23:35
FreedomMax:我指的是印出像helloWorld這種 05/01 23:36
FreedomMax:str 這個class是怎麼跟我傳入的hello連上關係的 05/01 23:38
james732:println(XXX); 當XXX是一個物件,就會呼叫XXX.toString() 05/01 23:38
james732:我想問:你知道什麼是constructor嗎? 05/02 00:06
FreedomMax:是建構的那個嗎 05/02 00:22
awashharp:String類別是使用char[]這個陣列去存資料的(參考原始碼) 05/02 00:45
FreedomMax:你是怎麼參考原始碼的呀 我下載 都不知道要開哪個目錄 05/02 15:42
awashharp:在j2se/src/share/classes/java/lang/String.java這裡 05/02 16:13
FreedomMax:感謝你 05/03 00:23