System類
getProperties()方法
- System類的getProperties()方法用于擷取目前系統的全部屬性,該方法會傳回一個Properties對象,其中封裝了系統的所有屬性,這些屬性都是以鍵值對的形式存在的
- 方法全名:static Properties getProperties()
package com.sgl;
import java.util.Properties;
import java.util.Set;
public class Test {
public static void main(String[] args) {
//擷取目前系統屬性
Properties properties = System.getProperties();
System.out.println(properties);
//擷取所有系統的key(屬性名),傳回Set對象
Set<String> peopertyNames = properties.stringPropertyNames();
for (String key : peopertyNames) {
//擷取目前見key(屬性名)所對應的值(屬性值)
String value = System.getProperty(key);
System.out.println(key+"---->"+ value);
}
}
}
/*
代碼簡述:
首先通過System的getProperties()方法擷取封裝系統了系統的Properties集合,然後對Properties集合進行疊代,将系統所有的鍵以及對應的值打出來
*/
運作結果:
//運作結果複制部分
java.runtime.name---->Java(TM) SE Runtime Environment
sun.boot.library.path---->F:\environment\java\jdk1.8\jre\bin
java.vm.version---->25.301-b09 //JVM版本号java.vm.version---->25.301-b09
java.vm.vendor---->Oracle Corporation
java.vendor.url---->http://java.oracle.com/
path.separator---->;
java.vm.name---->Java HotSpot(TM) 64-Bit Server VM
file.encoding.pkg---->sun.io
user.script---->
user.country---->CN //使用者國家user.country---->CN
sun.java.launcher---->SUN_STANDARD
sun.os.patch.level---->
java.vm.specification.name---->Java Virtual Machine Specification
user.dir---->E:\Idea\JavaSE
java.runtime.version---->1.8.0_301-b09
java.awt.graphicsenv---->sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs---->F:\environment\java\jdk1.8\jre\lib\endorsed
os.arch---->amd64 //作業系統架構os.arch---->amd64
java.io.tmpdir---->C:\Users\shiga\AppData\Local\Temp\
line.separator---->
java.vm.specification.vendor---->Oracle Corporation
user.variant---->
os.name---->Windows 10 //作業系統名稱os.name---->Windows 10
sun.jnu.encoding---->GBK
java.library.path---->F:\environment\java\jdk1.8\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;F:\environment\java\jdk1.8\bin;F:\environment\java\jdk1.8\jre\bin;C:\Users\shiga\AppData\Local\Microsoft\WindowsApps;E:\Bandizip\;.
java.specification.name---->Java Platform API Specification
java.class.version---->52.0
sun.management.compiler---->HotSpot 64-Bit Tiered Compilers
os.version---->10.0
user.home---->C:\Users\shiga
user.timezone---->
java.awt.printerjob---->sun.awt.windows.WPrinterJob
file.encoding---->UTF-8
java.specification.version---->1.8
user.name---->shiga
java.class.path----
java.vm.specification.version---->1.8
sun.arch.data.model---->64
java.home---->F:\environment\java\jdk1.8\jre
sun.java.command---->com.sgl.Test
java.specification.vendor---->Oracle Corporation
user.language---->zh
awt.toolkit---->sun.awt.windows.WToolkit
java.vm.info---->mixed mode
java.version---->1.8.0_301
java.ext.dirs---->F:\environment\java\jdk1.8\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext
sun.boot.class.path---->F:\environment\java\jdk1.8\jre\lib\resources.jar;F:\environment\java\jdk1.8\jre\lib\rt.jar;F:\environment\java\jdk1.8\jre\lib\sunrsasign.jar;F:\environment\java\jdk1.8\jre\lib\jsse.jar;F:\environment\java\jdk1.8\jre\lib\jce.jar;F:\environment\java\jdk1.8\jre\lib\charsets.jar;F:\environment\java\jdk1.8\jre\lib\jfr.jar;F:\environment\java\jdk1.8\jre\classes
java.vendor---->Oracle Corporation
file.separator---->\
java.vendor.url.bug---->http://bugreport.sun.com/bugreport/
sun.cpu.endian---->little
sun.io.unicode.encoding---->UnicodeLittle
sun.desktop---->windows
sun.cpu.isalist---->amd64
Process finished with exit code 0
currentTimeMills()方法
- currentTimeMills()方法傳回一個long類型的值,該值表示目前時間與1970年1月1日0點0時0分0秒之間的時間差,機關毫秒,通常也稱作時間戳
package com.sgl;
public class Test {
public static void main(String[] args) {
long startTime = System.currentTimeMillis(); //循環開始時的目前時間
int sum = 0;
for (int i = 0; i < 100000000; i++) {
sum = sum+i;
}
long endTime = System.currentTimeMillis(); //循環結束時的目前時間
System.out.println("程式運作時間為:"+(endTime - startTime)+"毫秒"); //程式運作時間為:28毫秒
//由于處理器性能等原因,程式運作時間也會有所不同
}
}
示範數字求和操作,程式在求和開始和結束時,分别調用了currentTimeMills()方法獲得了兩個時間戳,兩個時間戳之間的內插補點便是求和操作耗費的時間;
arraycopy(Object src,int srcPos,Object dest,int destPos,int length)方法
- arraycopy()方法是将一個數組中的元素快速拷貝到另一個數組
- src:表示源數組
- dest:表示目标數組
- srcPos:表示源數組中拷貝元素的起始位置
- destPos:表示拷貝到目标數組的其實位置
- length:表示拷貝元素的個數
注意:
- 在進行數組拷貝時,目标數組必須有足夠的空間來放拷貝的元素,否則會發生角标越界異常
- 保證源數組元素類型與目标數組元素類型一樣,否則程式會出現ArrayStoreException異常
package com.sgl;
public class Test {
public static void main(String[] args) {
long startTime = System.currentTimeMillis(); //循環開始時的目前時間
int[] scrArray = new int[]{101,102,103,104,105,106};//源數組
int[] destArray = new int[]{201,202,203,204,205}; //目标數組
System.arraycopy(scrArray,2,destArray,0,4);
//列印目标數組的元素
for (int i = 0; i < destArray.length; i++) {
System.out.println(i+":"+destArray[i]);
}
long endTime = System.currentTimeMillis(); //循環結束時的目前時間
System.out.println("程式運作時間為:"+(endTime - startTime)+"毫秒"); //程式運作時間為:28毫秒 值不确定
}
}
Runtime類
- Runtime類用于表示Java虛拟機運作時的狀态,它用于封裝Java虛拟機程序
- 啟動Java虛拟機時都會對應一個Runtime執行個體,并且隻有一個執行個體
- 應用程式不能建立自己的Runtime執行個體,通過getRuntime()方法擷取與之相關的Runtime對象
擷取方式如下:
- 由于Runtime類封裝了Java虛拟機,是以可以通過該類的執行個體對象來擷取目前虛拟機的相關資訊
package com.sgl;
public class Test {
public static void main(String[] args) {
long startTime = System.currentTimeMillis(); //循環開始時的目前時間
Runtime rt = Runtime.getRuntime();
System.out.println("處理器的個數:"
+rt.availableProcessors()+"個");//處理器的個數:16個
System.out.println("空閑記憶體大小:"
+rt.freeMemory()+"M");//空閑記憶體大小:244317232M
System.out.println("最大可用記憶體空間:"
+rt.maxMemory()+"M");//最大可用記憶體空間:3679977472M
long endTime = System.currentTimeMillis(); //循環結束時的目前時間
System.out.println("程式運作時間為:"+(endTime - startTime)+"毫秒"); //程式運作時間為:28毫秒 值不确定
}
}
/*簡述:
通過Runtime().getRuntime()方法建立一個Runtime的執行個體對象,分别調用該對象的availableProcessors(),freeMemory(),和
maxMemory()方法,将目前虛拟機的個數,空間記憶體數和可用最大空間的資訊列印出來
*/
exec()方法
- 調用Runtime對象的exec()方法,并将系統命名”notepad.exe“作為參數傳遞給方法。運作時會打開一個記事本,可通過任務管理器進行觀察
代碼和運作結果:
package com.sgl;
public class Test {
public static void main(String[] args) {
long startTime = System.currentTimeMillis(); //循環開始時的目前時間
Runtime rt = Runtime.getRuntime();
rt.exec("notepad.exe"); //調用exec()方法
long endTime = System.currentTimeMillis(); //循環結束時的目前時間
System.out.println("程式運作時間為:"+(endTime - startTime)+"毫秒"); //程式運作時間為:28毫秒 值不确定
}
}
Runtime()類的exec()方法會傳回一個Process對象,該對象表示作業系統的一個程序,此處為notepad.exe程序,通過Process對象可以對産生新程序進行管理,如關閉程序,隻需調用destory()方法,如下:
打開記事本後3秒後自動關閉功能
package com.sgl;
public class Test {
public static void main(String[] args) {
long startTime = System.currentTimeMillis(); //循環開始時的目前時間
//建立一個Runtime的執行個體對象
Runtime rt = Runtime.getRuntime();
//rt.exec("notepad.exe"); //調用exec()方法
//得到表示程序的Process對象
Process process = rt.exec("notepad.exe");
//程式休眠5秒
Thread.sleep(5000); //在多線程進行詳細講解
//關閉程式
process.destroy();
long endTime = System.currentTimeMillis(); //循環結束時的目前時間
System.out.println("程式運作時間為:"+(endTime - startTime)+"毫秒"); //程式運作時間為:28毫秒 值不确定
}
}
效果自己測