JavaSE基礎:System類和Runtime類

胖先森發表於2018-02-10

System類

簡單瞭解System類的使用和常用方法,System類是一些與系統相關的屬性和方法的集合,而且在System類中所有的屬性都是靜態的,要想引用這些屬性和方法,直接使用System類呼叫即可。

編號 方法名稱 型別 描述
1 public static void exit(int status) 靜態方法 系統退出,如果status為0就表示退出
2 public static void gc() 靜態方法 執行垃圾收集機制,呼叫的是Runtime類中的gc方法。
3 public static long currentTimeMillis() 靜態方法 返回以毫秒為單位的當前時間
4 public static void arraycopy(Object src,int srcPos, Object dest,int desPos,int length) 靜態方法 陣列拷貝操作
5 public static Properties getProperties() 靜態方法 取得當前系統的全部屬性
6 public static String getProperty(String key) 靜態方法 根據鍵值取得屬性的具體內容
java.version Java 執行時環境版本
java.vendor Java 執行時環境供應商
java.vendor.url Java 供應商的 URL
java.home Java 安裝目錄
java.vm.specification.version Java 虛擬機器規範版本
java.vm.specification.vendor Java 虛擬機器規範供應商
java.vm.specification.name Java 虛擬機器規範名稱
java.vm.version Java 虛擬機器實現版本
java.vm.vendor Java 虛擬機器實現供應商
java.vm.name Java 虛擬機器實現名稱
java.specification.version Java 執行時環境規範版本
java.specification.vendor Java 執行時環境規範供應商
java.specification.name Java 執行時環境規範名稱
java.class.version Java 類格式版本號
java.class.path Java 類路徑
java.library.path 載入庫時搜尋的路徑列表
java.io.tmpdir 預設的臨時檔案路徑
java.compiler 要使用的 JIT 編譯器的名稱
java.ext.dirs 一個或多個擴充套件目錄的路徑
os.name 作業系統的名稱
os.arch 作業系統的架構
os.version 作業系統的版本
file.separator 檔案分隔符(在 UNIX 系統中是“/”)
path.separator 路徑分隔符(在 UNIX 系統中是“:”)
line.separator 行分隔符(在 UNIX 系統中是“/n”)
user.name 使用者的賬戶名稱
user.home 使用者的主目錄
user.dir 使用者的當前工作目錄

來源JDK的幫助文件

package com.shxt.demo04;

public class Demo02 {
    public static void main(String[] args) {
        System.out.println("java_vendor:" + System.getProperty("java.vendor"));
        System.out.println("java_vendor_url:"
                + System.getProperty("java.vendor.url"));
        System.out.println("java_home:" + System.getProperty("java.home"));
        System.out.println("java_class_version:"
                + System.getProperty("java.class.version"));
        System.out.println("java_class_path:"
                + System.getProperty("java.class.path"));
        System.out.println("os_name:" + System.getProperty("os.name"));
        System.out.println("os_arch:" + System.getProperty("os.arch"));
        System.out.println("os_version:" + System.getProperty("os.version"));
        System.out.println("user_name:" + System.getProperty("user.name"));
        System.out.println("user_home:" + System.getProperty("user.home"));
        System.out.println("user_dir:" + System.getProperty("user.dir"));
        System.out.println("java_vm_specification_version:"
                + System.getProperty("java.vm.specification.version"));
        System.out.println("java_vm_specification_vendor:"
                + System.getProperty("java.vm.specification.vendor"));
        System.out.println("java_vm_specification_name:"
                + System.getProperty("java.vm.specification.name"));
        System.out.println("java_vm_version:"
                + System.getProperty("java.vm.version"));
        System.out.println("java_vm_vendor:"
                + System.getProperty("java.vm.vendor"));
        System.out
                .println("java_vm_name:" + System.getProperty("java.vm.name"));
        System.out.println("java_ext_dirs:"
                + System.getProperty("java.ext.dirs"));
        System.out.println("file_separator:"
                + System.getProperty("file.separator"));
        System.out.println("path_separator:"
                + System.getProperty("path.separator"));
        System.out.println("line_separator:"
                + System.getProperty("line.separator"));
    }
}
複製程式碼

Runtime類

執行時,是一個封裝了JVM程式的類。每一個JAVA程式實際上都是啟動了一個JVM程式,那麼每一個程式都是對應這一個Runtime例項,其例項是由JVM為其初始化的。

編號 方法名稱 型別 描述
1 public static Runtime getRuntime() 普通方法 用於取得Runtime類的例項
2 public long freeMemory() 普通方法 用於返回Java虛擬機器中的空閒記憶體
3 public long maxMemory() 普通方法 返回JVM的最大記憶體量
4 public void gc() 普通方法 執行垃圾回收器,釋放空間
5 public Process exec(String command) throws IOException 普通方法 執行本機命令
package com.shxt.demo04;

public class Demo03 {
    public static void main(String[] args) {
        Runtime run = Runtime.getRuntime(); // 通過Runtime類的靜態方法進行例項化操作
        System.out.println("JVM最大記憶體量:" + run.maxMemory()) ; // 觀察最大的記憶體,根據機器的不同,環境也會有所不同
        System.out.println("JVM空閒記憶體量:" + run.freeMemory()) ;    // 取得程式執行的空閒記憶體
        String str = "Hello " + "World" + "!!!"
                +"\t" + "Welcome " + "To " + "SHXT" + "~" ;
        System.out.println(str) ;
        for(int x=0;x<1000;x++){
            str += x ;          // 迴圈修改內容,會產生多個垃圾
        }
        System.out.println("操作String之後的,JVM空閒記憶體量:" + run.freeMemory()) ;
        run.gc() ;      // 進行垃圾收集,釋放空間
        System.out.println("垃圾回收之後的,JVM空閒記憶體量:" + run.freeMemory()) ;
    }
}
/*
    執行結果為:
        JVM最大記憶體量:3782737920
        JVM空閒記憶體量:249990240
        Hello World!!!	Welcome To SHXT~
        操作String之後的,JVM空閒記憶體量:239336736
        垃圾回收之後的,JVM空閒記憶體量:253339448
*/
複製程式碼

示例1:呼叫記事本命令

package com.shxt.demo04;

public class Demo04 {
    public static void main(String[] args) {
        Runtime r = Runtime.getRuntime();
        Process p = null;
        try{
            p = r.exec("notepad");
        } catch (Exception e) {
            System.out.println("Error executing notepad.");
        }
    }
}
複製程式碼

示例2:PING地址

package com.shxt.demo04;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Demo05 {
    public static void main(String[] args) {
        String cmd = "ping www.baidu.com";
        Runtime run = Runtime.getRuntime();//返回與當前 Java 應用程式相關的執行時物件
        try {
            Process p = run.exec(cmd);// 啟動另一個程式來執行命令
            BufferedInputStream in = new BufferedInputStream(p.getInputStream());
            BufferedReader inBr = new BufferedReader(new InputStreamReader(in,"GB2312"));
            String lineStr;
            while ((lineStr = inBr.readLine()) != null)
                //獲得命令執行後在控制檯的輸出資訊
                System.out.println(lineStr);// 列印輸出資訊
            //檢查命令是否執行失敗。
            if (p.waitFor() != 0) {
                if (p.exitValue() == 1)//p.exitValue()==0表示正常結束,1:非正常結束
                    System.err.println("命令執行失敗!");
            }
            inBr.close();
            in.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

複製程式碼

相關文章