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();
}
}
}
複製程式碼