日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

System是一個類,這個System類主要是一些與系統相關的屬性和方法的集合,而且其內部的方法全部是靜態的,所以我們直接使用System直接調用就好,比如我們常用的一個System.out.print。這篇文章我們就來分析一下System類。

一、System概述

System就是系統的意思。因此它的主要操作肯定也是和系統信息有關。這個類位于JAVA.lang包??赡芪覀兌加幸粋€疑惑,我們從來沒見過System被實例化,這是因為System類內部的構造函數是私有的,在外部不能訪問,因此也就不能被實例化了。

他主要有如下功能:

(1)系統信息的訪問,如外部屬性和環境變量等

(2)垃圾回收相關操作

(3)標準輸入輸出

(4)比較常用的其他操作,比如數組拷貝

接下來我們就對這些功能進行一個測試與描述:

二、System功能演示

1、獲取設置屬性方法

也就是說我們的System如何獲取系統的屬性,或者說是調用哪個方法獲取屬性。

(1)contains(Object value)、containsKey(Object key):判斷給定的參數或屬性關鍵字在屬性表中有定義,返回True或者False;

(2)getProperty(String key)、getProperty(String key, String default):根據參數獲取屬性

(3)list(PrintStream s)、list(PrintWriter w): 在輸出流中輸出屬性表內容;

(4)size():返回當前屬性表中定義的屬性關鍵字個數。

我們當然可以設置屬性:

(1)put(Object key, Object value) :向屬性表中追加屬性關鍵字和關鍵字的值;

(2)remove(Object key) :從屬性表中刪除關鍵字。

2、獲取系統屬性

上面我們可以直接使用System.contains等方法來調用,下面我們可以輸入以下參數來獲取系統信息。

深入分析java中的System類

 


深入分析java中的System類

 


深入分析java中的System類

 

然后使用代碼測試以下幾個比較典型的吧:

深入分析java中的System類

 

當然運行一下我們的控制臺就有結果了:

深入分析java中的System類

 

在這里只是挑選了一部分進行測試,參數已經列出來了,其他的可以自己測。

三、常見操作

1、拷貝數組arraycopy

深入分析java中的System類

 

2、獲取系統時間

深入分析java中的System類

 

四、垃圾回收相關操作:System.gc

這句話表明運行了垃圾回收器。java虛擬機會回收一下系統垃圾,比如說沒有使用的對象。

深入分析java中的System類

 

我們看一下運行結果再來分析

深入分析java中的System類

 

我們可以看到,在進行完垃圾回收之后,再輸入User相關信息時由于找不到對象,因此報了空指針異常。

我們進入到System.gc內部看一下,看看內部執行了什么操作,

深入分析java中的System類

 

在這里我們可以看到其實是執行了Runtime的垃圾回收操作。我們在進入會發現其實垃圾回收就是Runtime做的。

五、源碼分析

1、初始化

我們進入到System的源碼中,可以看到首先由這樣的描述:

深入分析java中的System類

 

上面是什么意思呢?

首先:registerNatives()方法是一個入口方法,注冊成了natives,也就是說該方法會令vm通過調用initializeSystemClass方法來完成初始化工作。

然后:構造函數被設置成private,說明我們不能實例化這個類,注釋也已經說明了。

既然System初始化的操作是通過initializeSystemClass,我們不如進入到這個類中去看看。

深入分析java中的System類

 

通過initializeSystemClass,我們已經能夠明白System是如何初始化的,對于每一步,我們可以繼續深入下去觀察其具體實現,在這里就不贅述了。

2、類屬性

類屬性其實主要是輸入輸出流

深入分析java中的System類

 

3、類方法

在這里肯定不能所有的方法都講一遍,在這里列舉幾個比較重要的方法。

(1)getProperty:獲取系統屬性

深入分析java中的System類

 

我們在這里發現,其實獲取屬性的操作最關鍵的就是最后一句props.getProperty(key)。我們進入到這個方法看看:

深入分析java中的System類

 

也就是說其實是 一直是回調defaults.getProperty(key),讓父類一直不停的去調用。最后返回一個String。

(2)checkKey:校驗key

深入分析java中的System類

 

里面很簡單就是看看是否為空。

(3)setProperties:設置系統屬性

深入分析java中的System類

 

最核心的就是最后一行,但是前面首先檢驗了是否是系統安全的屬性,而且也根據這個屬性初始化了一次。我們進入initProperties。

深入分析java中的System類

 

這是一個native方法。

(4)exit():退出當前的jvm

深入分析java中的System類

 

其實調用的也是runtime的退出方法。

(5)其他方法

深入分析java中的System類

 

我們會發現經常操作的這些方法其實也是native的。

(6)安全管理機制

與之相關的方法有三個

深入分析java中的System類

 

第二個:

深入分析java中的System類

 

還有最后一個

深入分析java中的System類

 

OK。源碼分析也就先說到這里,對于System類要知道其基本的內部實現以及常用的操作即可。

分享到:
標簽:java System
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定