Re: [J2SE] 想問一下有關System.out.println()的問題
※ 引述《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,
03/13 00:16
推
03/13 00:57,
03/13 00:57
→
03/13 04:57,
03/13 04:57
→
03/13 04:58,
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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 5 篇):