更新時(shí)間:2020-01-09 來(lái)源:黑馬程序員 瀏覽量:
System類(lèi)對(duì)大家來(lái)說(shuō)并不陌生,因?yàn)橹霸诖蛴〗Y(jié)果時(shí),使用的都是“System.out.println()”語(yǔ)句,這句代碼中就使用了System類(lèi)。System類(lèi)定義了一些與系統(tǒng)相關(guān)的屬性和方法,它所提供的屬性和方法都是靜態(tài)的,因此,想要引用這些屬性和方法,直接使用System類(lèi)調(diào)用即可。下面我們列舉了System類(lèi)的常用方法。
方法聲明 | 功能描述 |
static void exit(int status) | 該方法用于終止當(dāng)前正在運(yùn)行的Java虛擬機(jī),其中參加數(shù) status表示狀態(tài)碼,如果狀態(tài)碼不是0,則表示異常終止 |
static long gc() | 運(yùn)行垃圾回收器,并對(duì)垃圾進(jìn)行回收 |
static long currentTimeMillis() | 返回以毫秒為單位的當(dāng)前時(shí)間 |
static void arraycopy(Object src, int srcPos,Object dest,int destPos,int length) | 從src應(yīng)用的指定源數(shù)組復(fù)制到dest引用的數(shù)組,復(fù)制從指定 的位置開(kāi)始,到目標(biāo)的指定位置結(jié)束 |
static Properties getProperties() | 取得當(dāng)前的系統(tǒng)屬性 |
static String getProperty(String key) | 獲取指定鍵描述的系統(tǒng)屬性 |
上面列出了System類(lèi)的常用方法,接下來(lái)通過(guò)一些案例對(duì)表中的方法進(jìn)行講解。
1、getProperties()方法
Syste類(lèi)的getProperties()方法用于獲取當(dāng)前系統(tǒng)的全部屬性,該方法會(huì)返回一個(gè)Properties對(duì)象,其中封裝了系統(tǒng)的所有屬性,這些屬性是以鍵值對(duì)的形式存在,接下來(lái)過(guò)一個(gè)案例來(lái)顯示系統(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對(duì)象
Enumeration propertyNames=properties.propertyNames();
while (propertyNames.hasMoreElements()) {
//獲取當(dāng)前屬性對(duì)應(yīng)的鍵key
String key=(String) propertyNames.nextElement();
//獲得當(dāng)前key對(duì)應(yīng)的值value
String value=System.getProperty(key);
System.out.println(key+"--->"+value);
}
}
}
運(yùn)行結(jié)果:
上面案例實(shí)現(xiàn)了獲取當(dāng)前系統(tǒng)屬性的功能。首先通過(guò)Syste的get Properties()方法獲取封裝了系統(tǒng)屬性的Properties集合,然后對(duì) Properties集合進(jìn)行迭代,將所有系統(tǒng)屬性的鍵以及對(duì)應(yīng)的值打印出來(lái)。從圖中可以看出,這些系統(tǒng)屬性包括虛擬機(jī)版本號(hào)、用戶國(guó)家、操作系統(tǒng)的架構(gòu)等。
2. currentTimeMillis()
currentTimeMillis()方法返回一個(gè)1ong類(lèi)型的值,該值表示當(dāng)前時(shí)間與1970年1月1日0點(diǎn)0分0秒之間的時(shí)間差,單位是毫秒,習(xí)慣性地被稱(chēng)作時(shí)間戳。接下來(lái)通過(guò)個(gè)案例來(lái)計(jì)算程序在進(jìn)行求和操作時(shí)所消耗的時(shí)間。
public class system02 {
public static void main(String[] args){
long startTime=System.currentTimeMillis(); //循環(huán)開(kāi)始時(shí)的當(dāng)前時(shí)間
int sum=0;
for (int i=0;i<=100000000;i++){
sum +=i;
}
long endTime=System.currentTimeMillis(); //循環(huán)結(jié)束后的時(shí)間
System.out.println("程序運(yùn)行的時(shí)間為:"+(endTime-startTime)+"毫秒");
}
}
運(yùn)行結(jié)果:
上面案例中,演示了數(shù)字的求和操作,程序在求和開(kāi)始和結(jié)束時(shí),分別調(diào)用了current TimeMillis()方法獲得了兩個(gè)時(shí)間戳,兩個(gè)時(shí)間戳之間的差值便是求和操作耗費(fèi)的時(shí)間。
3. arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
arraycopy()方法用于將一個(gè)數(shù)組中的元素快速拷貝到另一個(gè)數(shù)組。其中的參數(shù)具體作用如下:
src:表示源數(shù)組。
dest:表示目標(biāo)數(shù)組。
srcPos:表示源數(shù)組中拷貝元素的起始位置。
desPos:表示拷貝到目標(biāo)數(shù)組的起始位置。
length:表示拷貝元素的個(gè)數(shù)。
需要注意的是,在進(jìn)行數(shù)組復(fù)制時(shí),目標(biāo)數(shù)組必須有足夠的空間來(lái)存放拷貝的元素,否則會(huì)發(fā)生角標(biāo)越界異常。接下來(lái)通過(guò)一個(gè)案例來(lái)演示數(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]);
}
}
}
運(yùn)行結(jié)果如下:
上面案例中,創(chuàng)建了兩個(gè)數(shù)組 fromArray和 toArray,分別代表源數(shù)組和目標(biāo)數(shù)組,當(dāng)調(diào)用 arraycopy()方法進(jìn)行元素拷貝時(shí),由于指定了從源數(shù)組中索引為2的元素開(kāi)始拷貝,并且拷貝4個(gè)元素存放在目標(biāo)數(shù)組中索引為3的位置,因此,在打印目標(biāo)數(shù)組的元素時(shí),程序首先打印的是數(shù)組toArray的前3個(gè)元素201、202、203,然后打印的是從fromArray中拷貝的4個(gè)元素。
除了以上例程涉及到的方法,System類(lèi)還有兩個(gè)常見(jiàn)的方法,分別是gc()和ext(int staus)方法。其中g(shù)c()方法用來(lái)啟動(dòng)Java的垃圾回收器,并且對(duì)內(nèi)存中的垃圾對(duì)象進(jìn)行回收。exit(int staus)方法用來(lái)終止當(dāng)前正在運(yùn)行的Java虛擬機(jī),其中的參數(shù)status用于表示當(dāng)前發(fā)生的異常狀態(tài),通常指定為0,表示正常退出,否則表示異常終止。
猜你喜歡:
Java String類(lèi)和StringBuffer類(lèi)有什么區(qū)別?
2020-01-08Java String類(lèi)的操作有哪些?[java培訓(xùn)]
2020-01-08java中字符串的截取和分隔[java學(xué)習(xí)筆記](méi)
2020-01-08java中字符串的替換和去除空格的方法[java學(xué)習(xí)筆記](méi)
2020-01-08Java字符串如何轉(zhuǎn)換大小寫(xiě)?
2020-01-08java String類(lèi)的常見(jiàn)操作匯總【java學(xué)習(xí)筆記】
2020-01-08