天天看點

System類(getProperties()方法,currentTimeMills()方法),Runtime類(exec()方法)

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毫秒   值不确定
    }
}
           
System類(getProperties()方法,currentTimeMills()方法),Runtime類(exec()方法)
System類(getProperties()方法,currentTimeMills()方法),Runtime類(exec()方法)

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毫秒   值不确定
    }
}
           

效果自己測