2012-08-17 18 views
35

可能重複:
What's the meaning of System.out.println in Java?什麼是系統的,在的println的System.out.println()在Java中

我一直在尋找的答案是什麼Systemout和在Java中,printlnSystem.out.println()中。我搜查,發現了不同的答案這樣的:

  • 系統是一個內置類存在於java.lang包。 該類有一個final修飾符,這意味着它不能被其他類繼承。 它包含預先定義的方法和字段,其提供設施,如標準輸入,輸出等

  • 出是在系統類的靜態最終字段(即,變量),它是類型爲PrintStream的(一個內置類,包含打印不同數據值的方法)。 必須使用類名來訪問靜態字段和方法,所以(System.out)。

  • 在這裏表示類型爲PrintStream類的參考變量。

  • 的println()是爲PrintStream類的公共方法來打印的數據值。 因此訪問的PrintStream類中的方法,我們使用通過out.println()(非靜態方法和字段只能通過使用refrence varialble訪問)

在另一個頁面我找到另一個對比定義爲

System.out.print是java中使用的標準輸出函數。其中System指定包名,out指定類名,print是該類中的一個函數。

我很困惑這些。任何人都可以請告訴我他們是什麼?

+1

請參閱http://stackoverflow.com/q/3406703/396730和http://stackoverflow.com/q/10004856/396730 – 2012-08-17 08:18:18

+0

我認爲第一種解釋更清晰一些,您可以隨時瀏覽源代碼以查看對於你自己,例如'public final static PrintStream out = nullPrintStream();' – Less 2012-08-17 08:18:48

+8

第二種解釋顯然是錯誤的。 – 2012-08-17 08:19:32

回答

7

您發佈的第一個答案(系統是一個內置類...)是漂亮的地方。

您可以補充說明System類包含大部分是本地的,並且由JVM在啓動過程中設置,例如將System.out printstream連接到與「標準輸出」(控制檯)關聯的本機輸出流。

11

每當你感到困惑時,我建議諮詢Javadoc作爲你澄清的第一位。

根據JavaDoc約System,這裏的醫生說什麼:

public final class System 
extends Object 

The System class contains several useful class fields and methods. It cannot be instantiated. 
Among the facilities provided by the System class are standard input, standard output, and error output streams; access to externally defined properties and environment variables; a means of loading files and libraries; and a utility method for quickly copying a portion of an array. 

Since: 
JDK1.0 

關於System.out

public static final PrintStream out 
The "standard" output stream. This stream is already open and ready to accept output data. Typically this stream corresponds to display output or another output destination specified by the host environment or user. 
For simple stand-alone Java applications, a typical way to write a line of output data is: 

    System.out.println(data) 
+1

當你明白他們的意思時,諮詢Javadoc是很好的。但如果你不這樣做?例如,新手可能不理解標準輸出和錯誤輸出流的概念,並且流已經打開並準備好接受輸出數據。當然,新手可能會爲這個概念提供谷歌搜索,但這往往會導致他無法理解的新概念。我沒有告訴Javadocs有什麼問題。我只是指出新手可能遇到的困難。這就是爲什麼他經常轉而採用一種他可以忽略的語言來解釋。 – 2016-01-07 11:46:45

+0

@BobUeland:當你不瞭解某些事情時,IMO最好的辦法是看看它的文檔,而不是看着人們對同一事物的解釋。當人們用自己的語言解讀官方文件時,有時可能會成爲混淆本身。我的意思是有很多方法可以用你自己的話來解釋同樣的事情,如果有大量的答案,那麼混淆本身的可能性非常高。 – Sujay 2016-01-07 20:09:12

+0

我同意你的看法,但不懂文檔的新手想要/需要這樣的東西:「看看System.out.println()。第一個以大寫字母開頭,所以它是一個類。第三個是()所以這是一個方法,第二個以小寫字母開頭,沒有(),所以它是一個字段,你想打印一些東西,但是必須找到能爲你做這個工作的人,你不知道那個人,你知道系統有一個叫做出來的字段,指向這個人,所以你知道System.out對這個人有用,並且你知道這個人有println()方法。 – 2016-01-08 11:24:54

102

System是來自java.lang包的最終課程。

out是在System類中聲明的類型爲PrintStream的類變量。

printlnPrintStream類的一種方法。

+11

這應該是正確答案 – OMGPOP 2013-09-02 07:12:40

相關問題