Re: [J2SE] 想問一下有關System.out.println()的問題

看板java作者 (累。。)時間15年前 (2010/03/13 08:40), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串5/5 (看更多)
※ 引述《s66449 (閒泡菜)》之銘言: : 請問一下,因為打的範例是有import java.io.PrintStream : 那如果不import java.io.PrintStream的話 : public class test : { : public static void main(String args[]) : { : System.out.println("123"); : } : } : out是static 所以可以直接用類別名稱去呼叫 : 變成System.out 那因為後面的println並不是static : 為什麼可以直接加.println()呢?? : 跟out傳回值是PrintStream類別有關嗎?

03/13 00:16,
因為 System.out 是 PrintStream println 是方法....
03/13 00:16

03/13 00:57,
應該說,因為沒有用到 PrintStream 這個「class」
03/13 00:57

03/13 04:57,
我的意思是我沒匯入PrintStream然後println也不是static
03/13 04:57

03/13 04:58,
為什麼可以直接加上.println()來呼叫這個方法??
03/13 04:58
我覺得你有點把 import, static 變數, 以及 方法呼叫 的用法混在一起了。 直接講重點,Java 本身的規定就是 (以下均假設為 public 存取屬性) 1. 如果是 static 變數或方法,就可以直接透過     類別名稱.該 static 變數或方法   的方式來使用該 static 變數或方法。 2. 如果是非 static 變數或方法,就要透過     其類別的物件名稱.該非 static 變數或方法   的方式來使用該非 static 變數或方法。 以上述所說的,今天 out 是 System 的 static 變數, 所以可以 System.out 來用它; 而 println() 為非 static 方法, 不過我們有其類別 (PrintStream) 的物件名稱 out, 因此可以 out.println() 來用它, 兩個串起來後就變成 System.out.println() 了。 至於你所講的有沒有 import java.io.PrintStream 的問題, 只有在你的程式碼中有直接寫到 PrintStream 這個「類別名稱」的時候, 才會需要去 import java.io.PrintStream, 如同 PsMonkey 版大在推文中所說的。 (或是不 import,但每次寫到它時都用全名 java.io.PrintStream。) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.113.101.250

03/13 11:27, , 1F
也謝謝你的講解
03/13 11:27, 1F

03/15 21:30, , 2F
這篇對我這個新手很有幫助,謝謝你。
03/15 21:30, 2F
文章代碼(AID): #1BcjyKqV (java)
討論串 (同標題文章)
文章代碼(AID): #1BcjyKqV (java)