激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java System類詳解_動力節點Java學院整理

Java System類詳解_動力節點Java學院整理

2020-09-13 15:44動力節點 Java教程

System類是jdk提供的一個工具類,有final修飾,不可繼承,由名字可以看出來,其中的操作多數和系統相關。這篇文章主要介紹了Java System類詳解_動力節點Java學院整理,需要的朋友可以參考下

System類是jdk提供的一個工具類,有final修飾,不可繼承,由名字可以看出來,其中的操作多數和系統相關。其功能主要如下:

• 標準輸入輸出,如out、in、err

• 外部定義的屬性和環境變量的訪問,如getenv()/setenv()和getProperties()/setProperties()

• 加載文件和類庫的方法,如load()和loadLibrary()、

• 一個快速拷貝數組的方法:arraycopy()

• 一些jvm操作,如gc()、runFinalization()、exit(),該部分并未在源碼的java doc中提到,可能因為本身不建議主動調用吧。而且這幾個方法都僅僅是Runtime.getRuntime()的調用,兩者沒有區別 下邊直接看圖,主要的方法和功能都已經列出來。

Java System類詳解_動力節點Java學院整理

 下邊我們重點來該類是如何初始化的。 首先在開頭我們就可以看如下代碼:

?
1
2
3
4
private static native void registerNatives();
static {
 registerNatives();
}

類中的靜態代碼塊調用了一個native方法registerNatives(),可以猜到該方法應該是一個入口方法,看一下注釋:通過靜態初始化注冊native方法,該方法會令vm通過調用initializeSystemClass方法來完成初始化工作。果然如此,那么接下來我們看下initializeSystemClass方法吧:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
private static void initializeSystemClass() {
  // 初始化props
  props = new Properties();
  initProperties(props);
  sun.misc.VM.saveAndRemoveProperties(props);
  //獲取系統相關的換行符
  lineSeparator = props.getProperty("line.separator");
  sun.misc.Version.init();
  //分別創建in、out、err的實例對象,并通過setXX0()初始化,查看setXX0()方法可知,這是個native方法,將系統的標準流管理到類內的對象
  FileInputStream fdIn = new FileInputStream(FileDescriptor.in);
  FileOutputStream fdOut = new FileOutputStream(FileDescriptor.out);
  FileOutputStream fdErr = new FileOutputStream(FileDescriptor.err);
  setIn0(new BufferedInputStream(fdIn));
  setOut0(new PrintStream(new BufferedOutputStream(fdOut, 128), true));
  setErr0(new PrintStream(new BufferedOutputStream(fdErr, 128), true));
  //加載zip包以獲取java.util.zip.ZipFile這個類,以便之后加載利庫使用
  loadLibrary("zip");
  // 設置平臺相關的信號處理
  Terminator.setup();
  // 初始化sun.misc相關的環境變量
  sun.misc.VM.initializeOSEnvironment();
  // 主線程不會在同一個線程組中添加相同的線程,我們必須在這里自己實現。注釋半天沒弄明白,看代碼就是主線程自己把自己加到了自己的線程組中......
  Thread current = Thread.currentThread();
  current.getThreadGroup().add(current);
  // 注冊共享秘鑰?注釋沒看明白,該方法就是實例化一個JavaLangAccess
  setJavaLangAccess();
  // 子系統在初始化的時候可以調用sun.misc.VM.isBooted(),以保證在application類加載器啟動前不做任何事。booted()其實就是改了個狀態,使isBooted()變為true。
  sun.misc.VM.booted();
}

以上所述是小編給大家介紹的Java System類詳解_動力節點Java學院整理,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美 日韩 亚洲 中文 | 蜜桃视频观看麻豆 | 91网站链接 | 国人精品视频在线观看 | 国产一区二区三区高清 | 久久久久久久久成人 | 免费毛片电影 | 久夜草 | 又黄又爽免费无遮挡在线观看 | 精品久久久久久久久久久αⅴ | 精品在线观看一区 | 亚洲视频在线一区二区 | 九九热播视频 | 天天夜干| 久草在线播放视频 | 国产精品免费成人 | 91精品国啪老师啪 | 91国内精品久久久久免费影院 | 久草在线手机视频 | 午夜国产在线观看 | 狠狠干伊人网 | 污黄视频在线观看 | 亚洲人成综合第一网 | 曰批全过程40分钟免费视频多人 | 欧美综合成人 | 久草手机在线 | 91重口视频 | 免费a级毛片大学生免费观看 | av免费在线观看免费 | 国产精品二区高清在线 | 欧美成人三级大全 | 中文字幕一区2区 | 九九热在线观看视频 | 91成人一区 | 欧美日韩大片在线观看 | 日韩电影一区二区三区 | 在线高清中文字幕 | 国产一级淫 | 青草视频在线观看视频 | 国产精品久久久久久久久久iiiii | 久久久久久久久久久久99 |