System:類中的方法和屬性都是靜態,system類不能被執行個體化。
(一) 欄位:in 標準輸入,預設是控制台;out標準輸出預設是鍵盤;err標準錯誤輸出。
(二)最常用的幾個靜態方法:
(1)arraycopy(Object src,int srcPro,,Object dest,int desPos,int length)從指定原數組中複製一個數組開始,到目標數組的指定位置結束。
(2)currentTimeMillis() 返回以毫秒為單位的目前時間。
(3)exit()終止當前正在啟動並執行java虛擬機器。
(4)gc()運行記憶體回收行程。強制終止動作——》調用finalize()。
gc():new建立的對象所佔用的記憶體。
finalize()非new建立的記憶體。
java虛擬機器採用停止-複製(複製對象,轉換成堆)和標記-清掃(遍曆所有的引用,進而找出所有存活對象)兩種方式處理垃圾。
(5)Properties的getProperties()確定當前系統屬性。Properties類表示了一個持久的屬性集。Properties可儲存在流中或從從流中載入。屬性列表中每個鍵及其對應值都是一個字串。一個屬性列表可包含另一個屬性列表作為他的“預設值”;如果未能在原有的屬性列表中搜尋到屬性鍵,則搜尋第二個屬性列表。因為Properties繼承了Hashtable,所以可對Properties對象應用put和putAll()。但不建議使用這兩方法,因為他們允許調用者插入器鍵或值不是String的項。相反,應該使用setProperty方法。如果在“不安全”的Properties對象(即包含非String的鍵)上調用propertyNames或list方法,則該調用失敗。
擷取虛擬機器載入程式的運行情況:
package com.heima;import java.util.*;public class Demo_1 {public static void main(String[] args) {// TODO Auto-generated method stub Properties prop=System.getProperties(); //因為Properties是Hashtable的子類,也就是Map集合的一個子類對象。 //那麼可以通過map的方法取出集合中的元素。 //在系統中定義一些特有資訊 //System.setProperty("mykey", "myvalue"); //擷取指定屬性資訊 // String value1=System.getProperty("os.name"); for(Object obj:prop.keySet()) { String value=(String)prop.get(obj); System.out.println(obj+":"+value);; }}}
總結:從這個程式可以看出JVM是跨平台的,每一個不同的os都裝有JVM。所謂的跨平台是以不同版本的JVM實現的。不同平台有不同的JVM,而不同的版本是根據對應的硬體以及軟體平台設計的。這些不同版本的JVM能識別相同的.class檔案。就像java給不同版本的平台請了個翻譯一樣。java虛擬機器其實是個翻譯器,java的class檔案裡面儲存的是java位元組碼。而把class檔案放到不同的平台下啟動並執行時候,就由針對不同平台的虛擬機器翻譯成那個平台認識的操作。