system
JAVA System類
System類代表系統,系統級的很多屬性和控制方法都放置在該類的內部。該類位於java.lang包。
由於該類的構造方法是private的,所以無法創建該類的對象,也就是無法實例化該類。其內部的成員變數和成員方法都是static的,所以也可以很方便的進行調用。
目錄
• 標準輸入輸出,如out、in、err
• 外部定義的屬性和環境變數的訪問,如getenv()/setenv()和getProperties()/setProperties()
• 載入文件和類庫的方法,如load()和loadLibrary()、
• 快速拷貝數組的方法:arraycopy()
• jvm操作:如gc()、runFinalization()、exit(),該部分並未在源碼的java doc中提到,可能因為本身不建議主動調用吧。而且這幾個方法都僅僅是Runtime.getRuntime()的調用,兩者沒有區別
• 獲取時間方法:System.nanoTime 和 System.currentTimeMillis
System類中提供了一些系統級的操作方法,這些方法實現的功能分別如下:
a、arraycopy方法
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
該方法的作用是數組拷貝,也就是將一個數組中的內容複製到另外一個數組中的指定位置,由於該方法是native方法,所以性能上比使用循環高效。
使用示例:
int[] a = {1,2,3,4};
int[] b = new int[5];
System.arraycopy(a,1,b,3,2);
該代碼的作用是將數組a中,從下標為1開始,複製到數組b從下標3開始的位置,總共複製2個。也就是將a[1]複製給b[3],將a[2]複製給b[4],這樣經過複製以後數組a中的值不發生變化,而數組b中的值將變成{0,0,0,2,3}。
b、currentTimeMillis方法
public static long currentTimeMillis()
該方法的作用是返回當前的計算機時間,時間的表達格式為當前計算機時間和GMT時間(格林威治時間)1970年1月1號0時0分0秒所差的毫秒數。例如:
long l = System. currentTimeMillis();
則獲得的將是一個長整型的數字,該數字就是以差值表達的當前時間。
使用該方法獲得的時間不夠直觀,但是卻很方便時間的計算。例如,計算程序運行需要的時間則可以使用如下的代碼:
long start = System. currentTimeMillis();
for(int i = 0;i < 100000000;i++){
int a = 0;
}
long end = System. currentTimeMillis();
long time = end – start;
則這裡變數time的值就代表該代碼中間的for循環執行需要的毫秒數,使用這種方式可以測試不同演演算法的程序的執行效率高低,也可以用於後期線程式控制制時的精確延時實現。
c、exit方法
public static void exit(int status)
該方法的作用是退出程序。其中status的值為0代表正常退出,非零代表異常退出。使用該方法可以在圖形界面編程中實現程序的退出功能等。
d、gc方法
public static void gc()
該方法的作用是請求系統進行垃圾回收。至於系統是否立刻回收,則取決於系統中垃圾回收演演算法的實現以及系統執行時的情況。