华南俳烁实业有限公司

java

當(dāng)前位置:中華考試網(wǎng) >> java >> java教程 >> 文章內(nèi)容

JavaSystem類詳解

來(lái)源:中華考試網(wǎng)  [2020年11月26日]  【

  System 類位于 java.lang 包,代表當(dāng)前 Java 程序的運(yùn)行平臺(tái),系統(tǒng)級(jí)的很多屬性和控制方法都放置在該類的內(nèi)部。由于該類的構(gòu)造方法是 private 的,所以無(wú)法創(chuàng)建該類的對(duì)象,也就是無(wú)法實(shí)例化該類。

  System 類提供了一些類變量和類方法,允許直接通過(guò) System 類來(lái)調(diào)用這些類變量和類方法。

  System 類的成員變量

  System 類有 3 個(gè)靜態(tài)成員變量,分別是 PrintStream out、InputStream in 和 PrintStream err。

  1. PrintStream out

  標(biāo)準(zhǔn)輸出流。此流已打開(kāi)并準(zhǔn)備接收輸出數(shù)據(jù)。通常,此流對(duì)應(yīng)于顯示器輸出或者由主機(jī)環(huán)境或用戶指定的另一個(gè)輸出目標(biāo)。

  例如,編寫(xiě)一行輸出數(shù)據(jù)的典型方式是:

  System.out.println(data);

  其中,println 方法是屬于流類 PrintStream 的方法,而不是 System 中的方法。

  2. InputStream in

  標(biāo)準(zhǔn)輸入流。此流已打開(kāi)并準(zhǔn)備提供輸入數(shù)據(jù)。通常,此流對(duì)應(yīng)于鍵盤(pán)輸入或者由主機(jī)環(huán)境或用戶指定的另一個(gè)輸入源。

  3. PrintStream err

  標(biāo)準(zhǔn)的錯(cuò)誤輸出流。其語(yǔ)法與 System.out 類似,不需要提供參數(shù)就可輸出錯(cuò)誤信息。也可以用來(lái)輸出用戶指定的其他信息,包括變量的值。

  例 1

  填寫(xiě)下面表單即可預(yù)約申請(qǐng)免費(fèi)試聽(tīng)java課程!害怕學(xué)不會(huì)?助教陪讀,隨時(shí)解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可全國(guó)推薦就業(yè)!

預(yù)約申請(qǐng)免費(fèi)聽(tīng)java課程

  • 地區(qū):
  • 姓名:
  • 手機(jī):

  編寫(xiě)一個(gè) Java 程序,使用本節(jié)介紹的 System 類實(shí)現(xiàn)從鍵盤(pán)輸入字符并顯示出來(lái)。 具體實(shí)現(xiàn)代碼如下:

  import java.io.IOException;public class Test06 { public static void main(String[] args) { System.out.println("請(qǐng)輸入字符,按回車鍵結(jié)束輸入:"); 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() 語(yǔ)句讀入一個(gè)字符,read() 方法是 InputStream 類擁有的方法。變量 c 必須用 int 類型而不能用 char 類型,否則會(huì)因?yàn)閬G失精度而導(dǎo)致編譯失敗。

  以上的程序如果輸入漢字將不能正常輸出。如果要正常輸出漢字,需要把 System.in 聲明為 InputStreamReader 類型的實(shí)例,最終在 try 語(yǔ)句塊中的代碼為:

  InputStreamReader in = new InputStreamReader(System.in, "GB2312");c = in.read();while(c != '\r') { System.out.print((char) c); c = in.read();}

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

  System 類的成員方法

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

  1. arraycopy() 方法

  該方法的作用是數(shù)組復(fù)制,即從指定源數(shù)組中復(fù)制一個(gè)數(shù)組,復(fù)制從指定的位置開(kāi)始,到目標(biāo)數(shù)組的指定位置結(jié)束。該方法的具體定義如下:

  public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)

  其中,src 表示源數(shù)組,srcPos 表示從源數(shù)組中復(fù)制的起始位置,dest 表示目標(biāo)數(shù)組,destPos 表示要復(fù)制到的目標(biāo)數(shù)組的起始位置,length 表示復(fù)制的個(gè)數(shù)。

  例 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("源數(shù)組:"); for(int i = 0;i < srcArray.length;i++) { System.out.println(srcArray[i]); } System.out.println("目標(biāo)數(shù)組:"); for(int j = 0;j < destArray.length;j++) { System.out.println(destArray[j]); } }}

  如上述代碼,將數(shù)組 srcArray 中,從下標(biāo) 1 開(kāi)始的數(shù)據(jù)復(fù)制到數(shù)組 destArray 從下標(biāo) 1 開(kāi)始的位置,總共復(fù)制兩個(gè)。也就是將 srcArray[1] 復(fù)制給 destArray[1],將 srcArray[2] 復(fù)制給 destArray[2]。這樣經(jīng)過(guò)復(fù)制之后,數(shù)組 srcArray 中的元素不發(fā)生變化,而數(shù)組 destArray 中的元素將變?yōu)?E、B、C、 H,下面為輸出結(jié)果:

  源數(shù)組:

  A

  B

  C

  D

  目標(biāo)數(shù)組:

  E

  B

  C

  H

  2. currentTimeMillis() 方法

  該方法的作用是返回當(dāng)前的計(jì)算機(jī)時(shí)間,時(shí)間的格式為當(dāng)前計(jì)算機(jī)時(shí)間與 GMT 時(shí)間(格林尼治時(shí)間)1970 年 1 月 1 日 0 時(shí) 0 分 0 秒所差的毫秒數(shù)。一般用它來(lái)測(cè)試程序的執(zhí)行時(shí)間。例如:

  long m = System.currentTimeMillis();

  上述語(yǔ)句將獲得一個(gè)長(zhǎng)整型的數(shù)字,該數(shù)字就是以差值表達(dá)的當(dāng)前時(shí)間。

  例 3

  使用 currentTimeMillis() 方法來(lái)顯示時(shí)間不夠直觀,但是可以很方便地進(jìn)行時(shí)間計(jì)算。例如,計(jì)算程序運(yùn)行需要的時(shí)間就可以使用如下的代碼:

  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("程序執(zhí)行時(shí)間" + time + "秒"); }}

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

  3. exit() 方法

  該方法的作用是終止當(dāng)前正在運(yùn)行的 Java 虛擬機(jī),具體的定義格式如下:

  public static void exit(int status)

  其中,status 的值為 0 時(shí)表示正常退出,非零時(shí)表示異常退出。使用該方法可以在圖形界面編程中實(shí)現(xiàn)程序的退出功能等。

  4. gc() 方法

  該方法的作用是請(qǐng)求系統(tǒng)進(jìn)行垃圾回收,完成內(nèi)存中的垃圾清除。至于系統(tǒng)是否立刻回收,取決于系統(tǒng)中垃圾回收算法的實(shí)現(xiàn)以及系統(tǒng)執(zhí)行時(shí)的情況。定義如下:

  public static void gc()

  5. getProperty() 方法

  該方法的作用是獲得系統(tǒng)中屬性名為 key 的屬性對(duì)應(yīng)的值,具體的定義如下:

  純文本復(fù)制

  public static String getProperty(String key)

責(zé)編:fushihao

上一篇:Java數(shù)組填充(fill())

下一篇: 沒(méi)有了

  • 會(huì)計(jì)考試
  • 建筑工程
  • 職業(yè)資格
  • 醫(yī)藥考試
  • 外語(yǔ)考試
  • 學(xué)歷考試
深泽县| 宁河县| 镇坪县| 东乡| 新乐市| 图木舒克市| 济南市| 灵璧县| 扎赉特旗| 华宁县| 昔阳县| 罗定市| 东乌珠穆沁旗| 西贡区| 周口市| 通州区| 依兰县| 清丰县| 唐海县| 邵阳县| 都匀市| 和平区| 海门市| 望江县| 平湖市| 卓资县| 松江区| 陵川县| 英吉沙县| 庐江县| 杭锦后旗| 保德县| 个旧市| 南宁市| 武邑县| 自治县| 洛隆县| 磐安县| 丹江口市| 玉门市| 阿拉尔市|