更新時間:2020-01-09 來源:黑馬程序員 瀏覽量:
System類對大家來說并不陌生,因為之前在打印結果時,使用的都是“System.out.println()”語句,這句代碼中就使用了System類。System類定義了一些與系統相關的屬性和方法,它所提供的屬性和方法都是靜態的,因此,想要引用這些屬性和方法,直接使用System類調用即可。下面我們列舉了System類的常用方法。
方法聲明 | 功能描述 |
static void exit(int status) | 該方法用于終止當前正在運行的Java虛擬機,其中參加數 status表示狀態碼,如果狀態碼不是0,則表示異常終止 |
static long gc() | 運行垃圾回收器,并對垃圾進行回收 |
static long currentTimeMillis() | 返回以毫秒為單位的當前時間 |
static void arraycopy(Object src, int srcPos,Object dest,int destPos,int length) | 從src應用的指定源數組復制到dest引用的數組,復制從指定 的位置開始,到目標的指定位置結束 |
static Properties getProperties() | 取得當前的系統屬性 |
static String getProperty(String key) | 獲取指定鍵描述的系統屬性 |
上面列出了System類的常用方法,接下來通過一些案例對表中的方法進行講解。
1、getProperties()方法
Syste類的getProperties()方法用于獲取當前系統的全部屬性,該方法會返回一個Properties對象,其中封裝了系統的所有屬性,這些屬性是以鍵值對的形式存在,接下來過一個案例來顯示系統所有的屬性。
import java.util.*;
public class system01 {
public static void main(String[] args) {
//獲得當前系統屬性
Properties properties=System.getProperties();
//獲得所有系統屬性的key,返回Enumeration對象
Enumeration propertyNames=properties.propertyNames();
while (propertyNames.hasMoreElements()) {
//獲取當前屬性對應的鍵key
String key=(String) propertyNames.nextElement();
//獲得當前key對應的值value
String value=System.getProperty(key);
System.out.println(key+"--->"+value);
}
}
}
運行結果:
上面案例實現了獲取當前系統屬性的功能。首先通過Syste的get Properties()方法獲取封裝了系統屬性的Properties集合,然后對 Properties集合進行迭代,將所有系統屬性的鍵以及對應的值打印出來。從圖中可以看出,這些系統屬性包括虛擬機版本號、用戶國家、操作系統的架構等。
2. currentTimeMillis()
currentTimeMillis()方法返回一個1ong類型的值,該值表示當前時間與1970年1月1日0點0分0秒之間的時間差,單位是毫秒,習慣性地被稱作時間戳。接下來通過個案例來計算程序在進行求和操作時所消耗的時間。
public class system02 {
public static void main(String[] args){
long startTime=System.currentTimeMillis(); //循環開始時的當前時間
int sum=0;
for (int i=0;i<=100000000;i++){
sum +=i;
}
long endTime=System.currentTimeMillis(); //循環結束后的時間
System.out.println("程序運行的時間為:"+(endTime-startTime)+"毫秒");
}
}
運行結果:
上面案例中,演示了數字的求和操作,程序在求和開始和結束時,分別調用了current TimeMillis()方法獲得了兩個時間戳,兩個時間戳之間的差值便是求和操作耗費的時間。
3. arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
arraycopy()方法用于將一個數組中的元素快速拷貝到另一個數組。其中的參數具體作用如下:
src:表示源數組。
dest:表示目標數組。
srcPos:表示源數組中拷貝元素的起始位置。
desPos:表示拷貝到目標數組的起始位置。
length:表示拷貝元素的個數。
需要注意的是,在進行數組復制時,目標數組必須有足夠的空間來存放拷貝的元素,否則會發生角標越界異常。接下來通過一個案例來演示數組元素的拷貝。
public class system03 {
public static void main(String[] args){
int[] fromArray={101,102,103,104,105,106}; //源數組
int[] toArray={201,202,203,204,205,206,207}; //目標數組
System.arraycopy(fromArray,2,toArray,3,4); //拷貝數組元素
//打印目標數組中的元素
for(int i=0;i<toArray.length;i++){
System.out.println(i+":"+toArray[i]);
}
}
}
運行結果如下:
上面案例中,創建了兩個數組 fromArray和 toArray,分別代表源數組和目標數組,當調用 arraycopy()方法進行元素拷貝時,由于指定了從源數組中索引為2的元素開始拷貝,并且拷貝4個元素存放在目標數組中索引為3的位置,因此,在打印目標數組的元素時,程序首先打印的是數組toArray的前3個元素201、202、203,然后打印的是從fromArray中拷貝的4個元素。
除了以上例程涉及到的方法,System類還有兩個常見的方法,分別是gc()和ext(int staus)方法。其中gc()方法用來啟動Java的垃圾回收器,并且對內存中的垃圾對象進行回收。exit(int staus)方法用來終止當前正在運行的Java虛擬機,其中的參數status用于表示當前發生的異常狀態,通常指定為0,表示正常退出,否則表示異常終止。
猜你喜歡: