日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java println源码_System.out.println()相关源码

發(fā)布時間:2025/3/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java println源码_System.out.println()相关源码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

System.out.println是一個Java語句,一般情況下是將傳遞的參數(shù),打印到控制臺。

System:是 java.lang包中的一個final類。根據(jù)javadoc,“java.lang.System該類提供的設(shè)施包括標準輸入,標準輸出和錯誤輸出流; 訪問外部定義的屬性和環(huán)境變量; 一種加載文件和庫的方法; 以及用于快速復(fù)制數(shù)組等一部分的實用方法… ”

out:是System類的靜態(tài)成員字段,類型為PrintStream。

public static final PrintStream out

他在啟動時就會被實例化,并與主機的標準輸出控制臺進行映射。該流在實例化之后立即打開,并準備接受數(shù)據(jù)。

println:是PrintStream類的一個方法。println打印(參數(shù)內(nèi)容+換行符) 到控制臺。

PrintStream類中有多個重載的println方法。每個println是通過調(diào)用print方法并添加一個換行符實現(xiàn)的。print方法是通過調(diào)用write方法實現(xiàn)的。

System.out.println() 結(jié)構(gòu)圖如下:

部分代碼段:

public final classSystem {

staticPrintStream out;

staticPrintStream err;

staticInputStream in;

...

}

public class PrintStream extendsFilterOutputStream {

//out object is inherited from FilterOutputStream class

public voidprintln() {

...

}

有一個普遍的觀念需要大家知道——System.out.println性能并不好。當我們深入分析時,其調(diào)用順序如下println - > print - > write()+ newLine()。這個順序流是Sun / Oracle JDK的實現(xiàn)。write()和newLine()都包含一個synchronized塊。同步有一點開銷,但更多的是添加字符到緩沖區(qū)和打印的開銷更大。

當我們運行性能分析時,運行多個System.out.println并記錄時間,執(zhí)行時間會按比例增加。當打印超過50個字符并打印超過50,000行時,性能下降。

當然這一切都取決于我們使用的場景。不過無論如何請勿使用System.out.println打印日志( logging)到stdout。

靜態(tài)導入來縮短System.out.println

有時我們覺得System.out.println是一個很長的語句要打印。靜態(tài)導入可能會縮短一點,但不推薦使用,因為它導致可讀性差。我只是使用這種情況來解釋靜態(tài)導入,并避免在下面的情況下使用它。

import staticjava.lang.System.out;public classShortSOP {public static voidmain(String[] args) {

out.println("Hello, world");

}

}

不靜態(tài)導入的話直接寫out.println會提示編譯錯誤的。

輸出重定向——改變輸出路徑

out對象可以自定義的。在啟動時由java運行時環(huán)境初始化,并且可以在執(zhí)行期間由開發(fā)人員更改。代替在默認情況下的標準輸出。當您通過命令行運行程序時,輸出將打印在同一個命令窗口中。我們可以使用setOut方法來改變這種行為。在以下示例中,我將輸出重定向到同一目錄中的文本文件。

public classChangeOut {public static voidmain(String args[]) {try{

System.setOut(new PrintStream(new FileOutputStream("log.txt")));

System.out.println("Now the output is redirected!");

}catch(Exception e) {}

}

}

總結(jié)

以上是生活随笔為你收集整理的java println源码_System.out.println()相关源码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。