簡體   English   中英

為什么我們需要 System class 來調用 out.println() 方法?

[英]Why do we need System class to call out.println() method?

當我們想在控制台打印行時我們編寫 System.out.println(data),如果我們使用 PrintStream object out 和使用 out.println(data) 會有什么區別。

謝謝。

System.out是 static 對PrintStream “輸出”的引用。 所以沒有區別。

PrintStream out = System.out;
out.println("Badgers");

為什么我們需要 System class 來調用 out.println() 方法?

我們沒有。 這只是獲取PrintStream object 以寫入標准 output 的便捷方式。

...如果我們使用 PrintStream object 並使用 out.println(data) 會有什么不同。

這取決於您如何獲得PrintStream object。

  • 如果您最初從System.outSystem.err獲得PrintStream object ,則沒有區別; 例如以下具有相同的效果:

     public void sayHello(PrintStream ps) { ps.println("hello"); } sayHello(System.out); System.out.println("hello");
  • 如果您在自己打開的 stream 上創建了 PrintStream,則行為將是類似的,但 output 將(很可能)將 go 轉移到不同的地方; 例如

    sayHello(new PrintStream(new FileOutputStream("foo.txt"));

    將“hello”寫入命名文件。

System.in/out/err沒有什么特別之處。 它們只是public static final變量,在 JVM 啟動時初始化為特定的 stream 對象。 (好吧,他們有一些不尋常的地方......但它並沒有在這里表現出來。)

完全沒有區別。 來自ProgrammerInterview.com

System class 內部是out的聲明,如下所示: public static final PrintStream out ,在Printstream class 內部是一個看起來像println()的聲明,它有一個public void println()方法。

PrintStream是一個 class,它將數據流式傳輸到標准 output。 通過添加 object 進行關聯,即staticfinalSystem class 中輸出。 So we as programmers can use it as System the class name (System.out) out is static object of PrintStream class and println( ) is a method in PrintStream class which are overloaded methods. 所以我們直接寫System.out.println(data)

System.out是一個 static PrintStream object,它綁定到系統的一個特殊文件:標准 output。 您可以將它的引用分配給任何其他PrintStream變量。

沒有,但out通常用作程序中的變量,因此它可能不明確。

println()PrintStream class 中的一個方法。 out 是PrintStream class 的 object 定義為 static 常數System ZA2F2ED4F8EBC2CBB14C21A29DZ40 地址。

因此,無論我們以何種方式調用該方法,它都是相同的。

但是如果您不想使用System class,則需要通過提供標准 output 地址來創建PrintStream object。

System.out.println這個詞在過去被大量使用,以至於每個 Java 代碼的普通讀者都知道它們的意思。 每個人都這樣寫,人們也習慣了。

如果您首先將System.out分配給局部變量,則代碼可能會更難閱讀。 這是因為在每一行中,您都必須問自己:“好吧,有些東西被打印出來了,但是在哪里?”。 另一方面,成語System.out.println回答了這個問題。 它顯然從代碼中突出顯示為 output(即使它只是用於調試目的)。

所以是的,您可以使用System.out.println的快捷方式,但在大多數情況下您不應該這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM