當前位置:首頁 » Java教學 » Java System類

Java System類

Java System類-System類位於package java.lang下麵, 凡是此package下麵的類我們可以直接引用無需先import進來, 因為JVM缺省就load了這下麵的所有class。

System類位於package java.lang下麵, 凡是此package下麵的類我們可以直接引用無需先import進來, 因為JVM缺省就load了這下麵的所有class。

System包含了一些我們常用的方法與成員變量。 System不能被實例化, 所有的方法都可以直接引用。 主要作用大致有:

Ø         輸入輸出流: 
(PrintStream) System.out (標準終端輸出流), 
(PrintStream) System.err(標準錯誤輸出流), 
(InputStream) System.in(標準輸入流)。 
我們還可以重定向這些流, 比如將所有的System.out的輸出全部重定向至一文件中去。 
System.setOut(PrintStream) 標準輸出重定向
System.setErr(PrintStream) 標準錯誤輸出重定向
System.setIn(InputStream) 標準輸入重定向

Ø         取當前時間:
System.currentTimeMillis() 所取到的時間是從1970/01/01以來1/1000秒計算的long型值。這個值可以轉換至Date或Timestamp值。 它一般還可以用來計算程序執行的時間。例:
long beginTime = System. currentTimeMillis();


System.out.println(“run time = ” + (System. currentTimeMillis() – beginTime));

Ø         數組拷貝:
System.arraycopy(Object src, int src_position, Object dst, int dst_position, int length)
src: 源數組。
src_position: 源數組拷貝的起始位置。
dst: 目標數組
dst_position: 拷貝至目標數組的起始位置
length: 拷貝元素的長度
利用System.arraycopy進行數組的拷貝效率是最高的, 一般情況下我們自己很少直接用到這個方法,但在集合類的內部中都大量使用了這個方法。 
例:
int[] array1 = {1, 2, 3, 4, 5};
int[] array2 = {4, 5, 6, 7, 8};
int array3 = new int[8];
System.arraycopy(array1, 0, array3, 0, 5);
System.arraycopy(array2, 2, array3, 5, 3);
此時array3 = {1, 2, 3, 4, 5, 6, 7, 8}
這比用for循環來進行賦值效率要高。

Ø         存取係統的Properties:
System.getProperties():取得當前所有的Properties, Properties將在後麵的集合一節進行詳細的論述。
System.setProperties(Properties props):設置係統的Properties。
System.getProperty(String key): 根據一個鍵值來取得一個Property。
System.setProperty(String key, String value): 設置係統的一個Property。
JVM起動的時候將會有一些缺省的Properties值, 例如:
java.version Java運行環境版本
java.home Java主目錄 installation directory
java.class.path Java 的class path
java.ext.dirs Java的擴展目錄路徑
file.separator 文件分隔符("/" on UNIX)
path.separator 路徑分隔符(":" on UNIX)
line.separator 行分隔符 ("\n" on UNIX)
user.name 用戶名
user.home 用戶主目錄
user.dir 用戶當前工作目錄
更詳細的信息請參照Java API。 另外在起動一個java程序的時候可以通過-D來設置係統的Property, 比如 java –Dejb.file=ejb_Test PrintTest 在PrintTest裡麵就可以通過System.getProperty(“ejb.file”)來取得值ejb_Test。

Ø         其它
System. loadLibrary(String libname): 加載native的動態庫。 可以用C寫JNI的庫, 然後在java中通過native方法來調用。
System.setSecurityManager(SecurityManager s)
System.getSecurityManager(): 設置與取得係統的security class。