- 首頁(yè)|
- 網(wǎng)校|
- 焚題庫(kù)|
- APP |
-
微信公眾號(hào)
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è)!
編寫(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)
下一篇: 沒(méi)有了
初級(jí)會(huì)計(jì)職稱中級(jí)會(huì)計(jì)職稱經(jīng)濟(jì)師注冊(cè)會(huì)計(jì)師證券從業(yè)銀行從業(yè)會(huì)計(jì)實(shí)操統(tǒng)計(jì)師審計(jì)師高級(jí)會(huì)計(jì)師基金從業(yè)資格稅務(wù)師資產(chǎn)評(píng)估師國(guó)際內(nèi)審師ACCA/CAT價(jià)格鑒證師統(tǒng)計(jì)資格從業(yè)
一級(jí)建造師二級(jí)建造師消防工程師造價(jià)工程師土建職稱房地產(chǎn)經(jīng)紀(jì)人公路檢測(cè)工程師建筑八大員注冊(cè)建筑師二級(jí)造價(jià)師監(jiān)理工程師咨詢工程師房地產(chǎn)估價(jià)師 城鄉(xiāng)規(guī)劃師結(jié)構(gòu)工程師巖土工程師安全工程師設(shè)備監(jiān)理師環(huán)境影響評(píng)價(jià)土地登記代理公路造價(jià)師公路監(jiān)理師化工工程師暖通工程師給排水工程師計(jì)量工程師
人力資源考試教師資格考試出版專業(yè)資格健康管理師導(dǎo)游考試社會(huì)工作者司法考試職稱計(jì)算機(jī)營(yíng)養(yǎng)師心理咨詢師育嬰師事業(yè)單位教師招聘公務(wù)員公選考試招警考試選調(diào)生村官
執(zhí)業(yè)藥師執(zhí)業(yè)醫(yī)師衛(wèi)生資格考試衛(wèi)生高級(jí)職稱護(hù)士資格證初級(jí)護(hù)師主管護(hù)師住院醫(yī)師臨床執(zhí)業(yè)醫(yī)師臨床助理醫(yī)師中醫(yī)執(zhí)業(yè)醫(yī)師中醫(yī)助理醫(yī)師中西醫(yī)醫(yī)師中西醫(yī)助理口腔執(zhí)業(yè)醫(yī)師口腔助理醫(yī)師公共衛(wèi)生醫(yī)師公衛(wèi)助理醫(yī)師實(shí)踐技能內(nèi)科主治醫(yī)師外科主治醫(yī)師中醫(yī)內(nèi)科主治兒科主治醫(yī)師婦產(chǎn)科醫(yī)師西藥士/師中藥士/師臨床檢驗(yàn)技師臨床醫(yī)學(xué)理論中醫(yī)理論