版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第11章Java常用類庫11.1API概念
11.2String類和StringBuffer類
11.3基本數(shù)據(jù)類型的包裝類
11.4System類與Runtime類
11.5Date與Calendar、DateFormat類
11.6Math與Random類
11.1API概念
API(ApplicationProgrammingInterface)就是應(yīng)用程序編程接口。假設(shè)現(xiàn)在要編寫一個機(jī)器人程序去控制一個機(jī)器人踢足球,程序需要向機(jī)器人發(fā)出向前跑、向后轉(zhuǎn)、射門、攔截等命令。沒有編過程序的人很難想象如何編寫這樣的程序,但對于有經(jīng)驗的人來說,就知道機(jī)器人廠商一定會提供一些控制這些機(jī)器人的Java類,該類中就有操縱機(jī)器人的各種動作的方法,只需要為每個機(jī)器人安排一個該類的實(shí)例對象,再調(diào)用這個對象的各種方法,機(jī)器人就會去執(zhí)行各種動作。這個Java類就是機(jī)器人廠家提供的應(yīng)用程序編程的接口,廠家將這些Java類命名為XxxRobotAPI(也就是Xxx廠家的機(jī)器人API)。好的機(jī)器人廠家不僅會提供Java程序用的RobotAPI,也會提供Windows編程語言(如VC++)用的RobotAPI,以滿足各類編程人員的需要。
在Windows編程時,經(jīng)常提到的WindowsAPI其實(shí)也就是Windows操作系統(tǒng)提供的編寫Windows程序的一些函數(shù),如CreateWindow就是一個API函數(shù),在應(yīng)用程序中調(diào)用這個函數(shù),操作系統(tǒng)就會按照該函數(shù)提供的參數(shù)信息產(chǎn)生一個相應(yīng)的窗口。在Java中經(jīng)常提到的API就是JDK中提供各種功能的Java類。
11.2String類和StringBuffer類
一個字符串就是一連串的字符,字符串的處理在許多程序中都用得到。Java定義了String和StringBuffer兩個類來封裝對字符串的各種操作。它們都被放到了java.lang包中,不需要用importjava.lang這個語句導(dǎo)入該包就可以直接使用。String類用于兩個字符串的比較、串中字符或子串的查找和抽取、字符串與其他類型之間的相互轉(zhuǎn)換等。String類對象的內(nèi)容一旦被初始化就不能再改變。StringBuffer類用于內(nèi)容可以改變的字符串,可以將其他各種類型的數(shù)據(jù)增加、插入到字符串中,也可以轉(zhuǎn)置字符串中原來的內(nèi)容。一旦通過StringBuffer生成了最終想要的字符串,就應(yīng)該使用StringBuffer.toString方法將其轉(zhuǎn)換成String類,隨后就可以使用String類的各種方法操縱這個字符串了。
Java為字符串提供了特別的連接操作符(?+?),可以把其他各種類型的數(shù)據(jù)轉(zhuǎn)換成字符串,并前后連接成新的字符串。連接操作符(?+?)的功能是通過StringBuffer類和它的append方法實(shí)現(xiàn)的。例如:
Stringx="a"+4+"c";
編譯時等效于
Stringx=new
StringBuffer().append("a").append(4).append("c").toString();
在實(shí)際開發(fā)中,如果需要頻繁改變字符串的內(nèi)容就需要考慮用StringBuffer類實(shí)現(xiàn),因為其內(nèi)容可以改變,所以執(zhí)行性能會比String類更高。
11.3基本數(shù)據(jù)類型的包裝類
Java既提供了基本數(shù)據(jù)的簡單類型,也提供了相應(yīng)的包裝類(也叫包裝類)。使用基本數(shù)據(jù)類型可以改善系統(tǒng)的性能,也能夠滿足大多數(shù)應(yīng)用需求。但基本數(shù)據(jù)類型不具有對象的特性,不能滿足某些特殊的需求。從JDK中可以知道,Java中很多類的很多方法的參數(shù)類型都是Object,即這些方法接收的參數(shù)都是對象,同時又需要用這些方法來處理基本數(shù)據(jù)類型的數(shù)據(jù),這時就要用到包裝類。比如,用Integer類來包裝整數(shù)。
Java中的基本數(shù)據(jù)類型共有八種,那么與之相對應(yīng)的基本數(shù)據(jù)類型包裝類也同樣有八種,表11-1列出了其對應(yīng)關(guān)系。表11-1基本數(shù)據(jù)類型包裝類與基本數(shù)據(jù)類型的對應(yīng)關(guān)系輸出結(jié)果:
124
程序說明:
本程序使用Integer類中的parseInt()方法將一字符串轉(zhuǎn)換成基本數(shù)據(jù)類型。 11.4System類與Runtime類
11.4.1System類
Java不支持全局函數(shù)和變量。Java設(shè)計者將一些與系統(tǒng)相關(guān)的重要函數(shù)和變量收集到了一個統(tǒng)一的類中,這就是System類。System類中的所有成員都是靜態(tài)的,引用這些變量和方法時,可直接使用System類名作前綴。在前面已經(jīng)使用到了標(biāo)準(zhǔn)輸入和輸出的in和out變量。下面介紹System類中的幾個方法,關(guān)于其他方法可參看JDK文檔資料。
(1)?exit(intstatus)方法用于提前終止虛擬機(jī)的運(yùn)行。對于發(fā)生了異常情況而想終止虛擬機(jī)運(yùn)行的情況,可傳遞一個非零值作為參數(shù)。若在用戶正常操作下要終止虛擬機(jī)的運(yùn)行,可傳遞零值作為參數(shù)。
(2)?CurrentTimeMillis方法返回從1970年1月1日0點(diǎn)0分0秒起至今的以毫秒為單位的時間,這是一個long類型的大數(shù)值。在計算機(jī)內(nèi)部,只有數(shù)值,沒有真正的日期類型及其他類型。也就是說,平常用到的日期本質(zhì)上就是一個數(shù)值,但通過這個數(shù)值能夠推算出其對應(yīng)的具體日期時間。
(3)?getProperties方法與getProperties方法用于獲得當(dāng)前虛擬機(jī)的環(huán)境屬性。Properties是Hashtable的子類,正好可以用于存儲環(huán)境屬性中的多個變量/值格式的數(shù)據(jù),getProperties方法的返回值是包含了當(dāng)前虛擬機(jī)的所有環(huán)境屬性的Properties類型的對象。
下例打印出當(dāng)前虛擬機(jī)的所有環(huán)境屬性的變量和值。
【例11-2】SystemInfo.java。圖11-1SystemInfo.java程序的輸出結(jié)果在Windows中,增加一個新的環(huán)境屬性是很容易的,但如何為Java虛擬機(jī)增加一個新的環(huán)境屬性呢?在命令行窗口中直接運(yùn)行Java命令,在顯示的用法幫助中會看到Java命令有一個?-D<name>=<value>?格式的選項可以設(shè)置新的系統(tǒng)環(huán)境屬性。按下面的格式運(yùn)行:
java-DAuthor=lxhSystemInfo
運(yùn)行后如圖11-2所示。
可以看到,輸出的結(jié)果中多了一行“Author=lxh”,即Java虛擬機(jī)中多了一個新的環(huán)境屬性Author。圖11-2運(yùn)行結(jié)果11.4.2Runtime類
Runtime類封裝了Java命令本身的運(yùn)行進(jìn)程,其中的許多方法與System中的方法重復(fù)。不能直接創(chuàng)建Runtime實(shí)例,但可以通過靜態(tài)方法Runtime.getRuntime獲得正在運(yùn)行的Runtime對象的引用。Java命令本身是多任務(wù)操作系統(tǒng)上的一個進(jìn)程,在這個進(jìn)程中啟動一個新的進(jìn)程,即執(zhí)行其他程序時使用exec方法。exec方法返回一個代表子進(jìn)程的Process類對象,通過這個對象,Java進(jìn)程可以與子進(jìn)程交互。
【例11-3】RuntimeDemo.java。
11.5Date與Calendar、DateFormat類
Date類用于表示日期和時間,最簡單的構(gòu)造函數(shù)是Date(),它以當(dāng)前的日期和時間初始化一個Date對象。由于開始設(shè)計Date時沒有考慮到國際化,所以后來又設(shè)計了兩個新的類來解決Date類中的問題,一個是Calendar類,另一個是DateFormat類。Calendar類是一個抽象基類,主要完成日期字段之間相互操作的功能,如Calendar.add方法可以實(shí)現(xiàn)在某一日期的基礎(chǔ)上增加若干天(或年、月、小時、分、秒等日期字段),Calendar.get方法可以取出日期對象中的年、月、日、小時、分、秒等日期字段的值,Calendar.set方法修改日期對象中的年、月、日、小時、分、秒等日期字段的值,Calendar.getInstance方法可以返回一個Calendar類型(更確切地說是它的某個子類)的對象實(shí)例,GregorianCalendar類是JDK目前提供的唯一的Calendar子類,Calendar.getInstance方法返回的就是預(yù)設(shè)了當(dāng)前時間的GregorianCalendar類對象。
下例計算出距當(dāng)前日期時間230天后的日期時間,并用“xxxx年xx月xx日xx小時:xx分:xx秒”的格式輸出。
【例11-4】CalendarDemo.java。雖然Calendar類幾乎完全替代了Date類,但在某些情況下,開發(fā)者仍有可能要用到Date類。譬如,程序中用的另外一個類的方法要求一個Date類型的參數(shù),有時要將用Date對象表示的日期以指定的格式輸出或是將用特定格式顯示的日期字符串轉(zhuǎn)換成一個Date對象,而Java.text.DateFormat就是實(shí)現(xiàn)這種功能的抽象基類。java.text.SimpleDateFormat類是JDK目前提供的一個DateFormat子類,它是一個具體類,具有把Date對象格式化為本地字符串,或者通過語義分析把日期或時間字符串轉(zhuǎn)換為Date對象的功能。
下例將“2005-8-1118:30:38”格式的日期字符串轉(zhuǎn)換成“2005年08月11日06點(diǎn)30分38秒”的形式。
【例11-5】DateFormatDemo.java。
SimpleDateFormat類相當(dāng)于一個模板,其中yyyy對應(yīng)的是年,MM對應(yīng)的是月,dd對應(yīng)的是日。更詳細(xì)的細(xì)節(jié)可查閱JDK文檔,關(guān)于這些參數(shù),JDK中寫得非常清楚。在上面的程序中,定義了一個SimpleDateFormat類的對象sp1來接收和轉(zhuǎn)換源格式字符串“2005-8-1118:30:38”,隨后又定義了該類的另一個對象sp2來接收sp1轉(zhuǎn)換成的Date類的對象,并按sp2所定義的格式轉(zhuǎn)換成字符串。
在這個過程中,已經(jīng)實(shí)現(xiàn)了利用SimpleDateFormat類把一個字符串轉(zhuǎn)換成Date類對象及把一個Date對象按用戶指定的格式輸出這兩個功能。 11.6Math與Random類
Math類包含了所有用于幾何和三角的浮點(diǎn)運(yùn)算函數(shù),這些函數(shù)都是靜態(tài)的,每個方法的使用都非常簡單。
Random類是一個隨機(jī)數(shù)產(chǎn)生器。隨機(jī)數(shù)是按照某種算法產(chǎn)生的,一旦用一個初值創(chuàng)建Random對象,就可以得到一系
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 硬盤數(shù)據(jù)恢復(fù)課程設(shè)計
- 游學(xué)課程設(shè)計培訓(xùn)
- 電力儀表的智能電網(wǎng)規(guī)劃考核試卷
- 畜牧智能養(yǎng)殖環(huán)境監(jiān)測與控制系統(tǒng)研發(fā)應(yīng)用考核試卷
- 生活中真實(shí)案例課程設(shè)計
- 汽車金融公司服務(wù)流程標(biāo)準(zhǔn)化與質(zhì)量控制考核試卷
- 電子測量儀器的聲學(xué)測量技術(shù)考核試卷
- 毛巾產(chǎn)品的色彩搭配與設(shè)計原理考核試卷
- 三年級數(shù)學(xué)計算題專項練習(xí)及答案
- 電阻電容電感元件的頻率特性考核試卷
- 醫(yī)療耗材供應(yīng)項目實(shí)施方案
- AQ/T 1023-2006 煤礦井下低壓供電系統(tǒng)及裝備通 用安全技術(shù)要求(正式版)
- 餐館食材訂購合同
- 小學(xué)高學(xué)段學(xué)生課堂消極沉默現(xiàn)象及應(yīng)對的研究
- 康復(fù)科發(fā)展規(guī)劃方案(2篇)
- 精神病院感染管理
- 2024河北工業(yè)職業(yè)技術(shù)大學(xué)教師招聘考試筆試試題
- 地震應(yīng)急演練實(shí)施方案村委會(2篇)
- 2024年合肥市梅山飯店有限公司招聘筆試沖刺題(帶答案解析)
- 基礎(chǔ)有機(jī)化學(xué)實(shí)驗智慧樹知到期末考試答案章節(jié)答案2024年浙江大學(xué)
- 幼兒園進(jìn)餐案例及分析總結(jié)
評論
0/150
提交評論