C語言中文網 目錄

Java System類詳解

< 上一頁Java Byte類 Java數組處理下一頁 >

System 類代表系統,系統級的很多屬性和控制方法都放置在該類的內部。該類位于 java. lang 包。由于該類的構造方法是 private 的,所以無法創建該類的對象,也就是無法實例化該類。

System 類內部的成員變量和成員方法都是 static 的,所以可以方便地進行調用。

System 類的成員變量

System 類有 3 個靜態成員變量,分別是 PrintStream out、InputStream in 和 PrintStream err。

1. PrintStream out

標準輸出流。此流已打開并準備接收輸出數據。通常,此流對應于顯示器輸出或者由主機環境或用戶指定的另一個輸出目標。

例如,編寫一行輸出數據的典型方式是:
System.out.println(data);
其中,println 方法是屬于流類 PrintStream 的方法,而不是 System 中的方法。

2. InputStream in

標準輸入流。此流已打開并準備提供輸入數據。通常,此流對應于鍵盤輸入或者由主機環境或用戶指定的另一個輸入源。

3. PrintStream err

標準的錯誤輸出流。其語法與 System.out 類似,不需要提供參數就可輸出錯誤信息。也可以用來輸出用戶指定的其他信息,包括變量的值。

例 1

編寫一個 Java 程序,使用本節介紹的 System 類實現從鍵盤輸入字符并顯示出來。 具體實現代碼如下:
import java.io.IOException;
public class Test06
{
    public static void main(String[] args)
    {
        System.out.println("請輸入字符,按回車鍵結束輸入:");
        int c;
        try
        {
            c=System.in.read();    //讀取輸入的字符
            while(c!='\r')
            {    //判斷輸入的字符是不是回車
                System.out.print((char) c);    //輸出字符
                c=System.in.read();
            }
        }
        catch(IOException e)
        {
            System.out.println(e.toString());
        }
        finally
        {
            System.err.println();
        }
    }
}

以上代碼中,System.in.read() 語句讀入一個字符,read() 方法是 InputStream 類擁有的方法。變量 c 必須用 int 類型而不能用 char 類型,否則會因為丟失精度而導致編譯失敗。

以上的程序如果輸入漢字將不能正常輸出。如果要正常輸出漢字,需要把 System.in 聲明為 InputStreamReader 類型的實例,最終在 try 語句塊中的代碼為:
InputStreamReader in=new InputStreamReader(System.in,"GB2312");
c=in.read();
while(c!='\r')
{
    System.out.print((char) c);
    c=in.read();
}

如上述代碼所示,語句 InputStreamReader in=new InputStreamReader(System.in,"GB2312") 聲明一個新對象 in,它從 Reader 繼承而來,此時就可以讀入完整的 Unicode 碼,顯示正常的漢字。

System 類的成員方法

System 類中提供了一些系統級的操作方法,常用的方法有 arraycopy()、currentTimeMillis()、exit()、gc() 和 getProperty()。

1. arraycopy() 方法

該方法的作用是數組復制,即從指定源數組中復制一個數組,復制從指定的位置開始,到目標數組的指定位置結束。該方法的具體定義如下:   
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
其中,src 表示源數組,srcPos 表示從源數組中復制的起始位置,dest 表示目標數組,destPos 表示要復制到的目標數組的起始位置,length 表示復制的個數。

例 2

下面的示例代碼演示了 arraycopy() 方法的使用:
public class System_arrayCopy
{
    public static void main(String[] args)
    {
        char[] srcArray={'A','B','C','D'};
        char[] destArray={'E','F','G','H'};
        System.arraycopy(srcArray,1,destArray,1,2);
        System.out.println("源數組:");
        for(int i=0;i<srcArray.length;i++)
        {
            System.out.println(srcArray[i]);
        }
        System.out.println("目標數組:");
        for(int j=0;j<destArray.length;j++)
        {
            System.out.println(destArray[j]);
        }
    }
}

如上述代碼,將數組 srcArray 中,從下標 1 開始的數據復制到數組 destArray 從下標 1 開始的位置,總共復制兩個。也就是將 srcArray[1] 復制給 destArray[1],將 srcArray[2] 復制給 destArray[2]。這樣經過復制之后,數組 srcArray 中的元素不發生變化,而數組 destArray 中的元素將變為 E、B、C、 H,下面為輸出結果:
源數組:
A
B
C
D
目標數組:
E
B
C
H

2. currentTimeMillis() 方法

該方法的作用是返回當前的計算機時間,時間的格式為當前計算機時間與 GMT 時間(格林尼治時間)1970 年 1 月 1 日 0 時 0 分 0 秒所差的毫秒數,例如:
long m=System.currentTimeMillis();
上述語句將獲得一個長整型的數字,該數字就是以差值表達的當前時間。

例 3

使用 currentTimeMillis() 方法來顯示時間不夠直觀,但是可以很方便地進行時間計算。例如,計算程序運行需要的時間就可以使用如下的代碼:
public class System_currentTimeMillis
{
    public static void main(String[] args)
    {
        long start=System.currentTimeMillis();
        for(int i=0;i<100000000;i++)
        {
            int temp=0;
        }
        long end=System.currentTimeMillis();
        long time=end-start;
        System.out.println("程序執行時間"+time+"秒");
    }
}

上述代碼中的變量 time 的值表示代碼中 for 循環執行所需要的毫秒數,使用這種方法可以測試不同算法的程序的執行效率高低,也可以用于后期線程控制時的精確延時實現。

3. exit() 方法

該方法的作用是終止當前正在運行的 Java 虛擬機,具體的定義格式如下:
public static void exit(int status)
其中,status 的值為 0 時表示正常退出,非零時表示異常退出。使用該方法可以在圖形界面編程中實現程序的退出功能等。

4. gc() 方法

該方法的作用是請求系統進行垃圾回收。至于系統是否立刻回收,取決于系統中垃圾回收算法的實現以及系統執行時的情況。定義如下:
public static void gc()

5. getProperty() 方法

該方法的作用是獲得系統中屬性名為 key 的屬性對應的值,具體的定義如下:
public static String getProperty(String key)

系統中常見的屬性名以及屬性的說明如表 1 所示。
表1 系統常見屬性
屬性名 屬性說明
java. version Java 運行時琢境版本
java.home Java 安裝目錄
os.name 操作系統的名稱
os.version 操作系統的版本
user.name 用戶的賬戶名稱
user.home 用戶的主目錄
user, dir 用戶的當前工作目錄

例 4

下面的示例演示了 getProperty() 方法的使用。
public class System_getProperty
{
    public static void main(String[] args)
    {
        String jversion=System.getProperty("java.version");
        String oName=System.getProperty("os.name");
        String user=System.getProperty("user.name");
        System.out.println("Java 運行時環境版本:"+jversion);
        System.out.println("當前操作系統是:"+oName);
        System.out.println("當前用戶是:"+user);
    }
}

運行該程序,輸出的結果如下:
Java 運行時環境版本:1.6.0_26
當前操作系統是:Windows 7
當前用戶是:Administrator

提示:使用 getProperty() 方法可以獲得很多系統級的參數以及對應的值,這里不再一一舉例。
< 上一頁Java Byte類 Java數組處理下一頁 >

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo
极速pk10开户