首頁新聞動態(tài)正文

Java System類方法詳細(xì)介紹[java培訓(xùn)]

更新時間:2020-01-09 來源:黑馬程序員 瀏覽量:

1577349771854_學(xué)IT就到黑馬程序員.gif

System類對大家來說并不陌生,因為之前在打印結(jié)果時,使用的都是“System.out.println()”語句,這句代碼中就使用了System類。System類定義了一些與系統(tǒng)相關(guān)的屬性和方法,它所提供的屬性和方法都是靜態(tài)的,因此,想要引用這些屬性和方法,直接使用System類調(diào)用即可。下面我們列舉了System類的常用方法。



方法聲明功能描述
static void exit(int status)該方法用于終止當(dāng)前正在運行的Java虛擬機,其中參加數(shù)
status表示狀態(tài)碼,如果狀態(tài)碼不是0,則表示異常終止
static long gc()運行垃圾回收器,并對垃圾進(jìn)行回收
static long currentTimeMillis()返回以毫秒為單位的當(dāng)前時間
static void arraycopy(Object src,
int srcPos,Object dest,int destPos,int length)
從src應(yīng)用的指定源數(shù)組復(fù)制到dest引用的數(shù)組,復(fù)制從指定
的位置開始,到目標(biāo)的指定位置結(jié)束
static Properties getProperties()取得當(dāng)前的系統(tǒng)屬性
static String getProperty(String key)獲取指定鍵描述的系統(tǒng)屬性

上面列出了System類的常用方法,接下來通過一些案例對表中的方法進(jìn)行講解。

 

1、getProperties()方法

Syste類的getProperties()方法用于獲取當(dāng)前系統(tǒng)的全部屬性,該方法會返回一個Properties對象,其中封裝了系統(tǒng)的所有屬性,這些屬性是以鍵值對的形式存在,接下來過一個案例來顯示系統(tǒng)所有的屬性。


import java.util.*;

public class system01 {

    public static void main(String[] args) {

        //獲得當(dāng)前系統(tǒng)屬性

        Properties properties=System.getProperties();

        //獲得所有系統(tǒng)屬性的key,返回Enumeration對象

        Enumeration propertyNames=properties.propertyNames();

        while (propertyNames.hasMoreElements()) {

            //獲取當(dāng)前屬性對應(yīng)的鍵key

            String key=(String) propertyNames.nextElement();

            //獲得當(dāng)前key對應(yīng)的值value

            String value=System.getProperty(key);

            System.out.println(key+"--->"+value);

        }

    }

}

運行結(jié)果:

1578558305077_system類.jpg


上面案例實現(xiàn)了獲取當(dāng)前系統(tǒng)屬性的功能。首先通過Syste的get Properties()方法獲取封裝了系統(tǒng)屬性的Properties集合,然后對 Properties集合進(jìn)行迭代,將所有系統(tǒng)屬性的鍵以及對應(yīng)的值打印出來。從圖中可以看出,這些系統(tǒng)屬性包括虛擬機版本號、用戶國家、操作系統(tǒng)的架構(gòu)等。


2. currentTimeMillis()

currentTimeMillis()方法返回一個1ong類型的值,該值表示當(dāng)前時間與1970年1月1日0點0分0秒之間的時間差,單位是毫秒,習(xí)慣性地被稱作時間戳。接下來通過個案例來計算程序在進(jìn)行求和操作時所消耗的時間。

 

public class system02 {

    public static void main(String[] args){

        long startTime=System.currentTimeMillis();     //循環(huán)開始時的當(dāng)前時間

        int sum=0;

        for (int i=0;i<=100000000;i++){

            sum +=i;

        }

    long endTime=System.currentTimeMillis();        //循環(huán)結(jié)束后的時間

    System.out.println("程序運行的時間為:"+(endTime-startTime)+"毫秒");

    }

}

 

運行結(jié)果:

 

1578558330841_System類02.jpg


上面案例中,演示了數(shù)字的求和操作,程序在求和開始和結(jié)束時,分別調(diào)用了current TimeMillis()方法獲得了兩個時間戳,兩個時間戳之間的差值便是求和操作耗費的時間。

 

3. arraycopy(Object src,int srcPos,Object dest,int destPos,int length)

arraycopy()方法用于將一個數(shù)組中的元素快速拷貝到另一個數(shù)組。其中的參數(shù)具體作用如下:

src:表示源數(shù)組。

dest:表示目標(biāo)數(shù)組。

srcPos:表示源數(shù)組中拷貝元素的起始位置。

desPos:表示拷貝到目標(biāo)數(shù)組的起始位置。

length:表示拷貝元素的個數(shù)。

 

需要注意的是,在進(jìn)行數(shù)組復(fù)制時,目標(biāo)數(shù)組必須有足夠的空間來存放拷貝的元素,否則會發(fā)生角標(biāo)越界異常。接下來通過一個案例來演示數(shù)組元素的拷貝。

public class system03 {

    public static void main(String[] args){

        int[] fromArray={101,102,103,104,105,106};      //源數(shù)組

        int[] toArray={201,202,203,204,205,206,207};   //目標(biāo)數(shù)組

        System.arraycopy(fromArray,2,toArray,3,4);      //拷貝數(shù)組元素

        //打印目標(biāo)數(shù)組中的元素

        for(int i=0;i<toArray.length;i++){

            System.out.println(i+":"+toArray[i]);

        }

    }

 

}

 

運行結(jié)果如下:

 

1578558347274_System類03.jpg


上面案例中,創(chuàng)建了兩個數(shù)組 fromArray和 toArray,分別代表源數(shù)組和目標(biāo)數(shù)組,當(dāng)調(diào)用 arraycopy()方法進(jìn)行元素拷貝時,由于指定了從源數(shù)組中索引為2的元素開始拷貝,并且拷貝4個元素存放在目標(biāo)數(shù)組中索引為3的位置,因此,在打印目標(biāo)數(shù)組的元素時,程序首先打印的是數(shù)組toArray的前3個元素201、202、203,然后打印的是從fromArray中拷貝的4個元素。

 

除了以上例程涉及到的方法,System類還有兩個常見的方法,分別是gc()和ext(int staus)方法。其中g(shù)c()方法用來啟動Java的垃圾回收器,并且對內(nèi)存中的垃圾對象進(jìn)行回收。exit(int staus)方法用來終止當(dāng)前正在運行的Java虛擬機,其中的參數(shù)status用于表示當(dāng)前發(fā)生的異常狀態(tài),通常指定為0,表示正常退出,否則表示異常終止。

猜你喜歡:

Java String類和StringBuffer類有什么區(qū)別?

java String類的常見操作匯總

分享到:
在線咨詢 我要報名
和我們在線交談!