版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第11章Java常用類(lèi)庫(kù)11.1API概念
11.2String類(lèi)和StringBuffer類(lèi)
11.3基本數(shù)據(jù)類(lèi)型的包裝類(lèi)
11.4System類(lèi)與Runtime類(lèi)
11.5Date與Calendar、DateFormat類(lèi)
11.6Math與Random類(lèi)
11.1API概念
API(ApplicationProgrammingInterface)就是應(yīng)用程序編程接口。假設(shè)現(xiàn)在要編寫(xiě)一個(gè)機(jī)器人程序去控制一個(gè)機(jī)器人踢足球,程序需要向機(jī)器人發(fā)出向前跑、向后轉(zhuǎn)、射門(mén)、攔截等命令。沒(méi)有編過(guò)程序的人很難想象如何編寫(xiě)這樣的程序,但對(duì)于有經(jīng)驗(yàn)的人來(lái)說(shuō),就知道機(jī)器人廠商一定會(huì)提供一些控制這些機(jī)器人的Java類(lèi),該類(lèi)中就有操縱機(jī)器人的各種動(dòng)作的方法,只需要為每個(gè)機(jī)器人安排一個(gè)該類(lèi)的實(shí)例對(duì)象,再調(diào)用這個(gè)對(duì)象的各種方法,機(jī)器人就會(huì)去執(zhí)行各種動(dòng)作。這個(gè)Java類(lèi)就是機(jī)器人廠家提供的應(yīng)用程序編程的接口,廠家將這些Java類(lèi)命名為XxxRobotAPI(也就是Xxx廠家的機(jī)器人API)。好的機(jī)器人廠家不僅會(huì)提供Java程序用的RobotAPI,也會(huì)提供Windows編程語(yǔ)言(如VC++)用的RobotAPI,以滿(mǎn)足各類(lèi)編程人員的需要。
在Windows編程時(shí),經(jīng)常提到的WindowsAPI其實(shí)也就是Windows操作系統(tǒng)提供的編寫(xiě)Windows程序的一些函數(shù),如CreateWindow就是一個(gè)API函數(shù),在應(yīng)用程序中調(diào)用這個(gè)函數(shù),操作系統(tǒng)就會(huì)按照該函數(shù)提供的參數(shù)信息產(chǎn)生一個(gè)相應(yīng)的窗口。在Java中經(jīng)常提到的API就是JDK中提供各種功能的Java類(lèi)。
11.2String類(lèi)和StringBuffer類(lèi)
一個(gè)字符串就是一連串的字符,字符串的處理在許多程序中都用得到。Java定義了String和StringBuffer兩個(gè)類(lèi)來(lái)封裝對(duì)字符串的各種操作。它們都被放到了java.lang包中,不需要用importjava.lang這個(gè)語(yǔ)句導(dǎo)入該包就可以直接使用。String類(lèi)用于兩個(gè)字符串的比較、串中字符或子串的查找和抽取、字符串與其他類(lèi)型之間的相互轉(zhuǎn)換等。String類(lèi)對(duì)象的內(nèi)容一旦被初始化就不能再改變。StringBuffer類(lèi)用于內(nèi)容可以改變的字符串,可以將其他各種類(lèi)型的數(shù)據(jù)增加、插入到字符串中,也可以轉(zhuǎn)置字符串中原來(lái)的內(nèi)容。一旦通過(guò)StringBuffer生成了最終想要的字符串,就應(yīng)該使用StringBuffer.toString方法將其轉(zhuǎn)換成String類(lèi),隨后就可以使用String類(lèi)的各種方法操縱這個(gè)字符串了。
Java為字符串提供了特別的連接操作符(?+?),可以把其他各種類(lèi)型的數(shù)據(jù)轉(zhuǎn)換成字符串,并前后連接成新的字符串。連接操作符(?+?)的功能是通過(guò)StringBuffer類(lèi)和它的append方法實(shí)現(xiàn)的。例如:
Stringx="a"+4+"c";
編譯時(shí)等效于
Stringx=new
StringBuffer().append("a").append(4).append("c").toString();
在實(shí)際開(kāi)發(fā)中,如果需要頻繁改變字符串的內(nèi)容就需要考慮用StringBuffer類(lèi)實(shí)現(xiàn),因?yàn)槠鋬?nèi)容可以改變,所以執(zhí)行性能會(huì)比String類(lèi)更高。
11.3基本數(shù)據(jù)類(lèi)型的包裝類(lèi)
Java既提供了基本數(shù)據(jù)的簡(jiǎn)單類(lèi)型,也提供了相應(yīng)的包裝類(lèi)(也叫包裝類(lèi))。使用基本數(shù)據(jù)類(lèi)型可以改善系統(tǒng)的性能,也能夠滿(mǎn)足大多數(shù)應(yīng)用需求。但基本數(shù)據(jù)類(lèi)型不具有對(duì)象的特性,不能滿(mǎn)足某些特殊的需求。從JDK中可以知道,Java中很多類(lèi)的很多方法的參數(shù)類(lèi)型都是Object,即這些方法接收的參數(shù)都是對(duì)象,同時(shí)又需要用這些方法來(lái)處理基本數(shù)據(jù)類(lèi)型的數(shù)據(jù),這時(shí)就要用到包裝類(lèi)。比如,用Integer類(lèi)來(lái)包裝整數(shù)。
Java中的基本數(shù)據(jù)類(lèi)型共有八種,那么與之相對(duì)應(yīng)的基本數(shù)據(jù)類(lèi)型包裝類(lèi)也同樣有八種,表11-1列出了其對(duì)應(yīng)關(guān)系。表11-1基本數(shù)據(jù)類(lèi)型包裝類(lèi)與基本數(shù)據(jù)類(lèi)型的對(duì)應(yīng)關(guān)系輸出結(jié)果:
124
程序說(shuō)明:
本程序使用Integer類(lèi)中的parseInt()方法將一字符串轉(zhuǎn)換成基本數(shù)據(jù)類(lèi)型。 11.4System類(lèi)與Runtime類(lèi)
11.4.1System類(lèi)
Java不支持全局函數(shù)和變量。Java設(shè)計(jì)者將一些與系統(tǒng)相關(guān)的重要函數(shù)和變量收集到了一個(gè)統(tǒng)一的類(lèi)中,這就是System類(lèi)。System類(lèi)中的所有成員都是靜態(tài)的,引用這些變量和方法時(shí),可直接使用System類(lèi)名作前綴。在前面已經(jīng)使用到了標(biāo)準(zhǔn)輸入和輸出的in和out變量。下面介紹System類(lèi)中的幾個(gè)方法,關(guān)于其他方法可參看JDK文檔資料。
(1)?exit(intstatus)方法用于提前終止虛擬機(jī)的運(yùn)行。對(duì)于發(fā)生了異常情況而想終止虛擬機(jī)運(yùn)行的情況,可傳遞一個(gè)非零值作為參數(shù)。若在用戶(hù)正常操作下要終止虛擬機(jī)的運(yùn)行,可傳遞零值作為參數(shù)。
(2)?CurrentTimeMillis方法返回從1970年1月1日0點(diǎn)0分0秒起至今的以毫秒為單位的時(shí)間,這是一個(gè)long類(lèi)型的大數(shù)值。在計(jì)算機(jī)內(nèi)部,只有數(shù)值,沒(méi)有真正的日期類(lèi)型及其他類(lèi)型。也就是說(shuō),平常用到的日期本質(zhì)上就是一個(gè)數(shù)值,但通過(guò)這個(gè)數(shù)值能夠推算出其對(duì)應(yīng)的具體日期時(shí)間。
(3)?getProperties方法與getProperties方法用于獲得當(dāng)前虛擬機(jī)的環(huán)境屬性。Properties是Hashtable的子類(lèi),正好可以用于存儲(chǔ)環(huán)境屬性中的多個(gè)變量/值格式的數(shù)據(jù),getProperties方法的返回值是包含了當(dāng)前虛擬機(jī)的所有環(huán)境屬性的Properties類(lèi)型的對(duì)象。
下例打印出當(dāng)前虛擬機(jī)的所有環(huán)境屬性的變量和值。
【例11-2】SystemInfo.java。圖11-1SystemInfo.java程序的輸出結(jié)果在Windows中,增加一個(gè)新的環(huán)境屬性是很容易的,但如何為Java虛擬機(jī)增加一個(gè)新的環(huán)境屬性呢?在命令行窗口中直接運(yùn)行Java命令,在顯示的用法幫助中會(huì)看到Java命令有一個(gè)?-D<name>=<value>?格式的選項(xiàng)可以設(shè)置新的系統(tǒng)環(huán)境屬性。按下面的格式運(yùn)行:
java-DAuthor=lxhSystemInfo
運(yùn)行后如圖11-2所示。
可以看到,輸出的結(jié)果中多了一行“Author=lxh”,即Java虛擬機(jī)中多了一個(gè)新的環(huán)境屬性Author。圖11-2運(yùn)行結(jié)果11.4.2Runtime類(lèi)
Runtime類(lèi)封裝了Java命令本身的運(yùn)行進(jìn)程,其中的許多方法與System中的方法重復(fù)。不能直接創(chuàng)建Runtime實(shí)例,但可以通過(guò)靜態(tài)方法Runtime.getRuntime獲得正在運(yùn)行的Runtime對(duì)象的引用。Java命令本身是多任務(wù)操作系統(tǒng)上的一個(gè)進(jìn)程,在這個(gè)進(jìn)程中啟動(dòng)一個(gè)新的進(jìn)程,即執(zhí)行其他程序時(shí)使用exec方法。exec方法返回一個(gè)代表子進(jìn)程的Process類(lèi)對(duì)象,通過(guò)這個(gè)對(duì)象,Java進(jìn)程可以與子進(jìn)程交互。
【例11-3】RuntimeDemo.java。
11.5Date與Calendar、DateFormat類(lèi)
Date類(lèi)用于表示日期和時(shí)間,最簡(jiǎn)單的構(gòu)造函數(shù)是Date(),它以當(dāng)前的日期和時(shí)間初始化一個(gè)Date對(duì)象。由于開(kāi)始設(shè)計(jì)Date時(shí)沒(méi)有考慮到國(guó)際化,所以后來(lái)又設(shè)計(jì)了兩個(gè)新的類(lèi)來(lái)解決Date類(lèi)中的問(wèn)題,一個(gè)是Calendar類(lèi),另一個(gè)是DateFormat類(lèi)。Calendar類(lèi)是一個(gè)抽象基類(lèi),主要完成日期字段之間相互操作的功能,如Calendar.add方法可以實(shí)現(xiàn)在某一日期的基礎(chǔ)上增加若干天(或年、月、小時(shí)、分、秒等日期字段),Calendar.get方法可以取出日期對(duì)象中的年、月、日、小時(shí)、分、秒等日期字段的值,Calendar.set方法修改日期對(duì)象中的年、月、日、小時(shí)、分、秒等日期字段的值,Calendar.getInstance方法可以返回一個(gè)Calendar類(lèi)型(更確切地說(shuō)是它的某個(gè)子類(lèi))的對(duì)象實(shí)例,GregorianCalendar類(lèi)是JDK目前提供的唯一的Calendar子類(lèi),Calendar.getInstance方法返回的就是預(yù)設(shè)了當(dāng)前時(shí)間的GregorianCalendar類(lèi)對(duì)象。
下例計(jì)算出距當(dāng)前日期時(shí)間230天后的日期時(shí)間,并用“xxxx年xx月xx日xx小時(shí):xx分:xx秒”的格式輸出。
【例11-4】CalendarDemo.java。雖然Calendar類(lèi)幾乎完全替代了Date類(lèi),但在某些情況下,開(kāi)發(fā)者仍有可能要用到Date類(lèi)。譬如,程序中用的另外一個(gè)類(lèi)的方法要求一個(gè)Date類(lèi)型的參數(shù),有時(shí)要將用Date對(duì)象表示的日期以指定的格式輸出或是將用特定格式顯示的日期字符串轉(zhuǎn)換成一個(gè)Date對(duì)象,而Java.text.DateFormat就是實(shí)現(xiàn)這種功能的抽象基類(lèi)。java.text.SimpleDateFormat類(lèi)是JDK目前提供的一個(gè)DateFormat子類(lèi),它是一個(gè)具體類(lèi),具有把Date對(duì)象格式化為本地字符串,或者通過(guò)語(yǔ)義分析把日期或時(shí)間字符串轉(zhuǎn)換為Date對(duì)象的功能。
下例將“2005-8-1118:30:38”格式的日期字符串轉(zhuǎn)換成“2005年08月11日06點(diǎn)30分38秒”的形式。
【例11-5】DateFormatDemo.java。
SimpleDateFormat類(lèi)相當(dāng)于一個(gè)模板,其中yyyy對(duì)應(yīng)的是年,MM對(duì)應(yīng)的是月,dd對(duì)應(yīng)的是日。更詳細(xì)的細(xì)節(jié)可查閱JDK文檔,關(guān)于這些參數(shù),JDK中寫(xiě)得非常清楚。在上面的程序中,定義了一個(gè)SimpleDateFormat類(lèi)的對(duì)象sp1來(lái)接收和轉(zhuǎn)換源格式字符串“2005-8-1118:30:38”,隨后又定義了該類(lèi)的另一個(gè)對(duì)象sp2來(lái)接收sp1轉(zhuǎn)換成的Date類(lèi)的對(duì)象,并按sp2所定義的格式轉(zhuǎn)換成字符串。
在這個(gè)過(guò)程中,已經(jīng)實(shí)現(xiàn)了利用SimpleDateFormat類(lèi)把一個(gè)字符串轉(zhuǎn)換成Date類(lèi)對(duì)象及把一個(gè)Date對(duì)象按用戶(hù)指定的格式輸出這兩個(gè)功能。 11.6Math與Random類(lèi)
Math類(lèi)包含了所有用于幾何和三角的浮點(diǎn)運(yùn)算函數(shù),這些函數(shù)都是靜態(tài)的,每個(gè)方法的使用都非常簡(jiǎn)單。
Random類(lèi)是一個(gè)隨機(jī)數(shù)產(chǎn)生器。隨機(jī)數(shù)是按照某種算法產(chǎn)生的,一旦用一個(gè)初值創(chuàng)建Random對(duì)象,就可以得到一系
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二手注塑機(jī)2024年度購(gòu)銷(xiāo)合同范本2篇帶眉腳
- 2025版冷鏈物流貨車(chē)承包經(jīng)營(yíng)合同范本3篇
- 2025年高端裝備制造業(yè)貨物采購(gòu)運(yùn)輸合同3篇
- 二零二五年度2025場(chǎng)現(xiàn)代農(nóng)業(yè)科技應(yīng)用推廣合同3篇
- 二零二五年度城市綠化項(xiàng)目承包經(jīng)營(yíng)合同賠償細(xì)則3篇
- 2025版建筑工程施工安全管理技術(shù)咨詢(xún)合同示范文本
- 二零二五年度彩鋼板房拆除工程廢棄物處置與資源化利用協(xié)議2篇
- 二零二五年度隧道工程安裝施工合同6篇
- 二零二五年度人工智能倫理與隱私保護(hù)合同法解讀
- 2025年度新型木材加工鋼材買(mǎi)賣(mài)居間服務(wù)與技術(shù)支持合同4篇
- 特魯索綜合征
- 《向心力》 教學(xué)課件
- 結(jié)構(gòu)力學(xué)數(shù)值方法:邊界元法(BEM):邊界元法的基本原理與步驟
- 2024年山東省泰安市高考語(yǔ)文一模試卷
- 工程建設(shè)行業(yè)標(biāo)準(zhǔn)內(nèi)置保溫現(xiàn)澆混凝土復(fù)合剪力墻技術(shù)規(guī)程
- 北師大版物理九年級(jí)全一冊(cè)課件
- 2024年第三師圖木舒克市市場(chǎng)監(jiān)督管理局招錄2人《行政職業(yè)能力測(cè)驗(yàn)》高頻考點(diǎn)、難點(diǎn)(含詳細(xì)答案)
- RFJ 006-2021 RFP型人防過(guò)濾吸收器制造與驗(yàn)收規(guī)范(暫行)
- 盆腔炎教學(xué)查房課件
- 110kv各類(lèi)型變壓器的計(jì)算單
- 新概念英語(yǔ)課件NCE3-lesson15(共34張)
評(píng)論
0/150
提交評(píng)論