![配套課件-GoogleAndroid開發(fā)技術(shù)_第1頁](http://file4.renrendoc.com/view14/M06/15/17/wKhkGWefmXaAfgldAACHDPMHmcw784.jpg)
![配套課件-GoogleAndroid開發(fā)技術(shù)_第2頁](http://file4.renrendoc.com/view14/M06/15/17/wKhkGWefmXaAfgldAACHDPMHmcw7842.jpg)
![配套課件-GoogleAndroid開發(fā)技術(shù)_第3頁](http://file4.renrendoc.com/view14/M06/15/17/wKhkGWefmXaAfgldAACHDPMHmcw7843.jpg)
![配套課件-GoogleAndroid開發(fā)技術(shù)_第4頁](http://file4.renrendoc.com/view14/M06/15/17/wKhkGWefmXaAfgldAACHDPMHmcw7844.jpg)
![配套課件-GoogleAndroid開發(fā)技術(shù)_第5頁](http://file4.renrendoc.com/view14/M06/15/17/wKhkGWefmXaAfgldAACHDPMHmcw7845.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章Android系統(tǒng)概述1.1Android操作系統(tǒng)的概念
1.2Android系統(tǒng)結(jié)構(gòu)
1.3Android開發(fā)平臺(tái)
1.4小結(jié)
Android音譯為“安卓”。Android系統(tǒng)是安裝在移動(dòng)設(shè)備(例如智能手機(jī)、個(gè)人數(shù)字助理(PDA)、MP5播放器、手持終端、平板電腦、上網(wǎng)本、電子書等)上的操作系統(tǒng)軟件,用于管理和調(diào)度移動(dòng)設(shè)備的軟、硬件資源。其作用相當(dāng)于個(gè)人電腦(PC)上安裝的微軟Windows操作系統(tǒng),與安裝在智能手機(jī)上的WindowsMobilePhone(WindowsCE)操作系統(tǒng)相似。Android系統(tǒng)與桌面Windows系統(tǒng)、WindowsCE操作系統(tǒng)的異同點(diǎn)列于表1-1,從表1-1中所列的特點(diǎn),我們可以對(duì)Android系統(tǒng)有一個(gè)全面直觀的認(rèn)識(shí)。表1-1Android系統(tǒng)與桌面Windows系統(tǒng)、WindowsCE操作系統(tǒng)的異同點(diǎn)
Android系統(tǒng)由AndyRubin首創(chuàng),最初的目的是設(shè)計(jì)一種新的開放性智能手機(jī)操作系統(tǒng)。2003年美國就已經(jīng)有大量的移動(dòng)設(shè)備使用嵌入式操作系統(tǒng),新研發(fā)的操作系統(tǒng)想進(jìn)入市場(chǎng)并被用戶認(rèn)可是件很困難的事情。然而當(dāng)時(shí)的大部分嵌入式操作系統(tǒng)都不是開源的,維護(hù)十分困難,Rubin等人因此提出這種開源的智能手機(jī)操作系統(tǒng),希望借此擠進(jìn)激烈競(jìng)爭(zhēng)、商機(jī)無限的嵌入式操作系統(tǒng)市場(chǎng)中,其贏利主要靠安裝、維護(hù)和提供專業(yè)特色應(yīng)用軟件等技術(shù)服務(wù)?,F(xiàn)在看來,Rubin的做法成功了。2005年8月Google收購Android加速了該開源嵌入式操作系統(tǒng)的發(fā)展,2007年以Google為首組建了全球性的開放手機(jī)聯(lián)盟(OpenHandsetAlliance),中國電信、中國移動(dòng)和中國聯(lián)通也是其中的成員,在全球范圍內(nèi)推動(dòng)基于Android操作系統(tǒng)的手機(jī)開發(fā)計(jì)劃。2008年10月宏達(dá)電(HTC)公司推出了第一款A(yù)ndroid系統(tǒng)的手機(jī),命名為HTCDream(G1),如圖1-1(a)所示,這是一款被市場(chǎng)證實(shí)成功的手機(jī)。隨后,幾乎在全球形成了研究Android操作系統(tǒng)的熱潮。Android操作系統(tǒng)的功能和版本逐年提高,目前已經(jīng)是第2.3.3版,內(nèi)部研發(fā)版本則更高。圖1-1(b)是基于Android2.3.3版本的Flyer智能手機(jī)。2011年初,Android已經(jīng)成為嵌入式操作系統(tǒng)領(lǐng)域最受歡迎的智能操作系統(tǒng)。圖1-1HTCDream(G1)和HTCFlyer
1.1Android操作系統(tǒng)的概念
Android操作系統(tǒng)是基于Linux內(nèi)核的嵌入式操作系統(tǒng),其底層(稱為第一層)為Linux操作系統(tǒng)及其驅(qū)動(dòng),該層源代碼是用C語言編寫的。底層上面建構(gòu)了系統(tǒng)庫和Java運(yùn)行時(shí)(即Java程序運(yùn)行支持軟件包或Java虛擬機(jī),“運(yùn)行時(shí)”是由“Runtime”意譯而來,在很多書上均采用這一譯法),稱為第二層,這一層是使用C/C++代碼寫成的。第三層為應(yīng)用程序框架層,為用戶開發(fā)Android程序直接提供API(應(yīng)用程序接口)函數(shù),這一層是用Java代碼實(shí)現(xiàn)的。第四層為用戶應(yīng)用程序?qū)?。由于Android操作系統(tǒng)內(nèi)置了許多用戶應(yīng)用程序,因此有些專家認(rèn)為應(yīng)用程序?qū)涌梢詣澐值紸ndroid操作系統(tǒng)中。當(dāng)然,用戶自己編寫的應(yīng)用程序也屬于這一層。這一層的應(yīng)用程序使用Java語言來設(shè)計(jì)。Android系統(tǒng)結(jié)構(gòu)如圖1-2所示。圖1-2Android系統(tǒng)結(jié)構(gòu)
Android系統(tǒng)相對(duì)于其他嵌入式操作系統(tǒng)而言,具有兩個(gè)明顯的優(yōu)點(diǎn),即開放源代碼和網(wǎng)絡(luò)功能強(qiáng)大。前面提到了Android系統(tǒng)最初開放源代碼的原因,從2003年到今天仍然保持著這一獨(dú)特的優(yōu)勢(shì),除了嵌入式操作系統(tǒng)領(lǐng)域市場(chǎng)競(jìng)爭(zhēng)激烈外,Android使用Linux作為其底層平臺(tái)是其開源的另一個(gè)重要原因。Google本身是互聯(lián)網(wǎng)公司,其下的所有產(chǎn)品都是基于互聯(lián)網(wǎng)模式發(fā)展的,Google收購的Android系統(tǒng)也不會(huì)例外。伴隨著Android系統(tǒng)的誕生和版本升級(jí),Android系統(tǒng)的網(wǎng)絡(luò)功能越來越強(qiáng)大,這使得基于Android系統(tǒng)編寫網(wǎng)絡(luò)程序比基于其他任何嵌入式操作系統(tǒng)都更加容易??梢哉f,一部Android手機(jī)就是一部互聯(lián)網(wǎng)終端,網(wǎng)上購物、新聞、旅游、導(dǎo)航、智能家居等應(yīng)用的確給用戶帶來了極大的生活便利。
Android系統(tǒng)使用Java語言編寫應(yīng)用程序,從一定意義上可以說Android系統(tǒng)推動(dòng)了Java語言的廣泛應(yīng)用。Java語言屬于面向?qū)ο蟮母呒?jí)語言,Java語言程序必須借助于Java虛擬機(jī)解釋執(zhí)行,它比其他高級(jí)語言的可移植性都強(qiáng)。在Android模擬器上運(yùn)行成功的應(yīng)用程序,一定能夠成功地部署和運(yùn)行在Android系統(tǒng)終端機(jī)上,這使得Android系統(tǒng)應(yīng)用程序的開發(fā)變得非常方便。
Android系統(tǒng)的圖形界面也是它的一個(gè)亮點(diǎn),嚴(yán)格地說,Android系統(tǒng)不是基于可視化窗口的,而是直接基于圖形的。也就是說,Android系統(tǒng)界面是由一幅幅圖畫組合在一起的,因此,Android系統(tǒng)界面比較“炫”!?相比于WindowsCE的視窗而言,其更人性化一些。Android系統(tǒng)界面美觀是其受到用戶歡迎的最重要的原因,盡管如此,Google對(duì)現(xiàn)有Android系統(tǒng)界面仍然不很滿意,據(jù)說新版本的Android系統(tǒng)在用戶界面上還會(huì)有較大的創(chuàng)新。目前最新的Android系統(tǒng)版本號(hào)為2.3,研發(fā)代號(hào)為Gingerbread(姜餅),其主要的功能和特點(diǎn)如下:
(1)系統(tǒng)源代碼公開,通過SDK(SoftwareDevelopmentKit)和模擬器AVD(AndroidVirtualDevice)可以在PC機(jī)上體驗(yàn)Android2.3的功能;
(2)支持無線通信和3G網(wǎng)絡(luò);
(3)用戶界面可定制為個(gè)性化界面;
(4)支持互聯(lián)網(wǎng)功能、后臺(tái)下載和在線文件夾(即網(wǎng)絡(luò)文件夾),采用Google搜索服務(wù);
(5)支持多攝像頭、陀螺儀等多種傳感器,這樣一部Android手機(jī)可以集成前、后兩個(gè)攝像頭;
(6)具有強(qiáng)大的多媒體功能,支持混響音效(例如低音、環(huán)繞和虛擬化效果等);
(7)具有強(qiáng)大的圖像管理功能,支持JPG、GIF、PNG和BMP等格式圖像文件;
(8)支持Web瀏覽器;
(9)支持WiFi、藍(lán)牙和近距離通訊(NearFieldCommunications,NFC)等;
(10)具有地圖、定位和GPS功能等。 1.2Android系統(tǒng)結(jié)構(gòu)
圖1-2為Android系統(tǒng)結(jié)構(gòu)圖,由于直接翻譯Android系統(tǒng)組件的術(shù)語并不準(zhǔn)確,因此這里給出了經(jīng)典的英文Android系統(tǒng)結(jié)構(gòu)圖,如圖1-3所示。圖1-3Android系統(tǒng)結(jié)構(gòu)圖由圖1-3可知,Android系統(tǒng)是基于Linux內(nèi)核的操作系統(tǒng),習(xí)慣上把Linux內(nèi)核(LinuxKernal)層稱為其第一層。Linux是免費(fèi)和公開源碼的實(shí)時(shí)搶先式多任務(wù)操作系統(tǒng),Linux內(nèi)核協(xié)助Android系統(tǒng)完成進(jìn)程調(diào)度、進(jìn)程間通信、內(nèi)存管理、虛文件系統(tǒng)管理、系統(tǒng)安全管理和設(shè)備驅(qū)動(dòng)等功能。圖1-3中僅列舉了Linux內(nèi)核實(shí)現(xiàn)的10種設(shè)備驅(qū)動(dòng)功能,即顯示驅(qū)動(dòng)、攝像驅(qū)動(dòng)、Flash存儲(chǔ)驅(qū)動(dòng)、藍(lán)牙驅(qū)動(dòng)、BinderIPC驅(qū)動(dòng)(用于進(jìn)程間通信管理)、USB驅(qū)動(dòng)、鍵盤驅(qū)動(dòng)、WiFi驅(qū)動(dòng)、音頻驅(qū)動(dòng)、功耗管理。事實(shí)上,Linux內(nèi)核還協(xié)助Android完成強(qiáng)大的網(wǎng)絡(luò)管理和驅(qū)動(dòng)等,被視為Android系統(tǒng)的一個(gè)硬件抽象層。正因?yàn)锳ndroid基于Linux內(nèi)核,很多專家指出,要深入學(xué)習(xí)Android必須加強(qiáng)Linux系統(tǒng)的學(xué)習(xí)。但如果重點(diǎn)放在Android應(yīng)用程序設(shè)計(jì)上,即使不懂Linux,對(duì)學(xué)習(xí)Android程序開發(fā)也影響不大。由于Android系統(tǒng)是架構(gòu)在Linux系統(tǒng)之上的,因此Linux系統(tǒng)不支持的處理器,Android系統(tǒng)也同樣無法支持,即Android系統(tǒng)只能移植到Linux系統(tǒng)可以運(yùn)行的處理器上。好在Linux系統(tǒng)支持大多數(shù)流行的處理器,例如x86結(jié)構(gòu)、ARM、MIPS等。Linux系統(tǒng)的這種廣泛的可移植性決定了Android系統(tǒng)具有廣泛的可移植性。第二層是Android系統(tǒng)庫(Libraries)和Android運(yùn)行時(shí)(Runtime),這一層是使用C/C++代碼編寫的。Android系統(tǒng)庫包含了大量的類,通過第三層(即應(yīng)用程序框架層)被應(yīng)用程序開發(fā)者調(diào)用,應(yīng)用程序開發(fā)者使用的大量API(應(yīng)用程序接口)函數(shù)來自于這些類。API函數(shù)越豐富,則用戶開發(fā)應(yīng)用程序的工作量越小。隨著Android系統(tǒng)版本的升級(jí),API函數(shù)級(jí)別也隨之上升,如表1-2所示。表1-2Android系統(tǒng)與API級(jí)別的關(guān)系表1-2顯示的最新的API級(jí)別為11。從表1-2中可以看到Android系統(tǒng)每個(gè)版本的研發(fā)代號(hào)都是一種食品的名稱,依次譯為“杯形蛋糕”、“炸面圈”、“指形小餅”、“凍酸奶”、“姜餅”、“蜂巢”和“冰淇淋”,估計(jì)發(fā)起人是一位美食家,可以預(yù)見下一個(gè)版本一定也是一種流行的受人喜愛的小食品名稱,這也正是Android系統(tǒng)研發(fā)的用意所在,希望能受到系統(tǒng)研發(fā)者和應(yīng)用程序開發(fā)者們的喜愛。圖1-3中第二層Android系統(tǒng)庫給出了9個(gè)組件,即SurfaceManager(界面管理器)、MediaFramework(多媒體框架)、SQLite、OpenGLES、FreeType、WebKit、SGL、SSL和Libc。這9個(gè)組件都十分復(fù)雜,下面簡(jiǎn)要說明一下各個(gè)組件的作用。
SurfaceManager(界面管理器)負(fù)責(zé)顯示相關(guān)的操作,Android系統(tǒng)界面是基于圖形系統(tǒng)的,這種圖形系統(tǒng)采用客戶端/服務(wù)器的方式進(jìn)行工作。“客戶端”就是用戶的應(yīng)用程序界面,而“服務(wù)器”負(fù)責(zé)與這個(gè)應(yīng)用程序界面相關(guān)的數(shù)據(jù)管理,由一個(gè)稱為SurfaceFlinger的組件管理,“服務(wù)器”與“客戶端”的通信需要借助于Binder類。界面管理器就是要管理這種工作方式,以實(shí)現(xiàn)對(duì)二維或三維圖形的顯示。
MediaFramework(多媒體框架)是一個(gè)非常實(shí)用的類庫,其中封裝了大量處理多媒體數(shù)據(jù)的API函數(shù),支持流行的絕大部分多媒體格式,使得應(yīng)用程序開發(fā)者開發(fā)多媒體軟件時(shí)非常輕松,只需要調(diào)用多媒體框架中的API函數(shù)就可以了。
SQLite是Android集成的關(guān)系型數(shù)據(jù)庫,也是公開源代碼的嵌入式數(shù)據(jù)庫,支持ANSISQL92標(biāo)準(zhǔn)的大部分SQL(結(jié)構(gòu)化查詢語言)語句,它速度快、體積小(約250KB),最大能支持的數(shù)據(jù)庫文件大小為4TB。
OpenGLES是Android系統(tǒng)中二維和三維圖形處理與加速的API函數(shù)集。
SGL是SkiaGraphicsLibrary的首字母簡(jiǎn)寫,是Android用來處理二維圖形的向量圖形引擎。所謂的“引擎”術(shù)語是從汽車術(shù)語借用過來的,在計(jì)算機(jī)軟件中的引擎是指軟件處理中的最核心部分,就像汽車發(fā)動(dòng)機(jī)是汽車的核心一樣,一個(gè)軟件功能的升級(jí)主要取決于其“引擎”部分的升級(jí)。SGL就是Android系統(tǒng)的二維圖形引擎。
FreeType是Android系統(tǒng)使用的字體引擎,F(xiàn)reeType是公開源碼和免費(fèi)的,其優(yōu)點(diǎn)在于提供簡(jiǎn)單、統(tǒng)一的API函數(shù)訪問多種字體格式文件,例如位圖字體和矢量字體,這使得Android系統(tǒng)處理字體時(shí)非常方便。
SSL是SecureSocketsLayer的首字母簡(jiǎn)稱,即安全套接層,這說明Android系統(tǒng)支持SSL,即安全套接層協(xié)議。SSL對(duì)發(fā)送的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行加密,防止數(shù)據(jù)在傳送至合法目的地網(wǎng)絡(luò)終端的過程中被非法用戶使用或修改。這在電子商務(wù)和網(wǎng)上銀行的數(shù)據(jù)交換中尤為重要。SSL通過對(duì)合法用戶的認(rèn)證和數(shù)據(jù)的加密,確保用戶的信息安全,Android系統(tǒng)自誕生以來,就支持SSL協(xié)議。事實(shí)上,所有的嵌入式操作系統(tǒng)瀏覽器都支持SSL協(xié)議。
WebKit是公開源碼的網(wǎng)絡(luò)瀏覽器引擎,這個(gè)引擎穩(wěn)定性好、兼容性強(qiáng)、效率高,不僅Android系統(tǒng)瀏覽器基于WebKit引擎,蘋果的iPhone瀏覽器也基于這個(gè)引擎。
libc是通用的C語言庫,供Android系統(tǒng)庫調(diào)用。
Android運(yùn)行時(shí)(Runtime)包括核心庫(CoreLibraries)和Dalvik虛擬機(jī)(VirtualMachine)。核心庫集成了絕大多數(shù)Java語言核心庫的功能,供Java語言程序運(yùn)行時(shí)調(diào)用。Dalvik虛擬機(jī)解釋并運(yùn)行格式為dex的Java程序,術(shù)語dex是DalvikeXecutable的縮寫,常規(guī)的Java語言程序(class字節(jié)文件)通過Android系統(tǒng)內(nèi)置的dx工具轉(zhuǎn)化為dex格式,這種格式被優(yōu)化為代碼內(nèi)存占用最小的文件格式,因此,Android的可執(zhí)行文件擴(kuò)展名為.dex。每個(gè)Android應(yīng)用程序啟動(dòng)后都對(duì)應(yīng)著一個(gè)進(jìn)程,該進(jìn)程屬于它自己的Dalvik虛擬機(jī)實(shí)例。Dalvik虛擬機(jī)可以同時(shí)高效地運(yùn)行多個(gè)虛擬機(jī)實(shí)例,從而實(shí)現(xiàn)多任務(wù)處理。第三層為Android應(yīng)用程序框架,進(jìn)行Android應(yīng)用程序開發(fā)必須熟練掌握其4種基本組件,即活動(dòng)(Activity)、服務(wù)(Service)、廣播接收器、內(nèi)容提供者(ContentProvider)的使用技術(shù)。應(yīng)用程序框架層為開發(fā)Android應(yīng)用程序提供了各種API函數(shù),這些函數(shù)屬于不同的類。圖1-3中列出了10類組件,即活動(dòng)管理器(ActiviteManager)、窗口管理器(WindowManager)、內(nèi)容提供者(ContentProviders)、視圖系統(tǒng)(ViewSystem)、通知管理器(NotificationManager)、包管理器(PackageManager)、電話管理器(TelephoneManager)、資源管理器(ResourceManager)、地址管理器(LocationManager)、XMPP服務(wù)(XMPPService)。其中,XMPP是GoogleTalk的通信協(xié)議,而GoogleTalk簡(jiǎn)稱GTalk,是Google的即時(shí)通訊方式,也就是通常所說的文字或語音聊天。此外,GTalk還支持E-mail功能。第三層是進(jìn)行應(yīng)用程序開發(fā)的基礎(chǔ),也是本書涉及的主要內(nèi)容,這一層的組件將在以后的章節(jié)中詳細(xì)介紹。
第四層為用戶應(yīng)用程序?qū)?,這一層的軟件包括歡迎界面(Home)、聯(lián)系人(Contacts)、電話(Phone)、瀏覽器(Browser)等用戶直接使用的程序,當(dāng)然也包括用戶自己開發(fā)的應(yīng)用程序。本書將詳細(xì)介紹該層應(yīng)用程序的設(shè)計(jì)方法。
1.3Android開發(fā)平臺(tái)
1.3.1基于Windows的Android開發(fā)平臺(tái)
組建Android開發(fā)平臺(tái)需要的軟件有四種,即JDK(JavaDevelopmentKit)、Eclipse、ADT(AndroidDevelopmentTools)插件、AndroidSDK(SoftwareDevelopmentKit)。令人欣慰的是,所有這些軟件都可以免費(fèi)獲得和使用。
為了使組建平臺(tái)的過程條理性比較強(qiáng),下面按安裝步驟依次介紹,每一步用“S+順序號(hào)”表示,例如第一步用S1表示。筆者使用的計(jì)算機(jī)操作系統(tǒng)為32位WindowsXP專業(yè)版SP3,但是下面介紹的步驟適用于更高版本的Windows操作系統(tǒng),即這里介紹的安裝步驟具有通用性。建議讀者使用最新的Windows操作系統(tǒng)。
S1.安裝JDK軟件
如果要在Windows操作系統(tǒng)下運(yùn)行和開發(fā)Java程序,必需安裝JDK(JavaDevelopmentKit),JDK包含了JRE(JavaRuntimeEnvironment)。如果只想在Windows系統(tǒng)下運(yùn)行Java應(yīng)用程序,則只需要安裝JRE。
登錄/technetwork/java/javase/downloads/index.html下載JavaSEDevelopmentKit6u24(JDK),文件名為“jdk-6u24-windows-i586.exe”,大小約為76.58MB。進(jìn)入到該網(wǎng)頁的超鏈接“InstallationInstructions”(安裝向?qū)?,可以閱讀詳細(xì)的安裝方法。本書所用的JDK軟件版本為截止2011年4月中旬時(shí)的最新版本。JDK軟件的更新比較快,建議讀者安裝最新版本的JDK軟件。雙擊下載后的程序圖標(biāo)“jdk-6u24-windows-i586.exe”,即進(jìn)入安裝JDK的過程。筆者采用了缺省的安裝目錄“C:\ProgramFiles\Java\jdk1.6.0_24\”,安裝過程中將提示安裝JRE,筆者采用了缺省目錄“C:\ProgramFiles\Java\jre6”。一般地,計(jì)算機(jī)將在2分鐘內(nèi)完成安裝,然后進(jìn)入到“所有程序|附件|命令提示符”窗口,輸入“java-version”,將顯示如圖1-4所示結(jié)果,表明安裝JDK軟件成功。圖1-4顯示JDK版本號(hào)窗口
S2.安裝Eclipse軟件
登錄/下載Eclipse軟件,網(wǎng)站上的各個(gè)EclipseIDE(集成開發(fā)環(huán)境)均可以使用,這里推薦使用EclipseIDEforJavaEEDevelopers或EclipseClassic3.6.2。筆者使用EclipseIDEforJavaEEDevelopers,文件名為“eclipse-jee-helios-SR2-win32.zip”,大小約為206MB,截止到2011年4月中旬的最新版本號(hào)為4.1。建議讀者下載最新版本的Eclipse軟件。該軟件無需安裝,解壓后即可運(yùn)行,筆者將其解壓到D盤,如圖1-5所示,啟動(dòng)文件名為“eclipse.exe”。圖1-5Eclipse軟件包雙擊圖1-5中的圖標(biāo)“eclipse.exe”,第一次使用時(shí)會(huì)彈出如圖1-6所示窗口。在“Workspace”中填入一個(gè)路徑,筆者使用“D:\myWorkspace”這個(gè)路徑,或者使用圖1-6右邊的“Browse…”按鈕選擇其他已存在的路徑。然后,選中“Usethisasthedefaultanddonotaskagain”復(fù)選框,在以后運(yùn)行Eclipse軟件時(shí)默認(rèn)的工作區(qū)保存目錄為“D:\myWorkspace”,將不再彈出該啟動(dòng)窗口。圖1-6選擇工作區(qū)目錄點(diǎn)擊圖1-6中的“OK”按鈕進(jìn)入到Eclipse軟件主界面,如圖1-7所示。圖1-7Eclipse軟件主界面
S3.安裝ADT插件
在圖1-7中選擇菜單項(xiàng)“Help|InstallNewSoftware…”,進(jìn)入到圖1-8所示的窗口,在“Workwith”欄中輸入/android/eclipse/。然后,點(diǎn)擊右邊的“Add...”按鈕,在彈出的“AddRepository”對(duì)話框的“Name”欄中輸入“ADT”(此處可以輸入其他讀者想要的名稱),然后點(diǎn)擊“OK”按鈕,進(jìn)入到圖1-9所示界面。圖1-8安裝新軟件圖1-9安裝新開發(fā)工具在圖1-9中顯示了最新版本的ADT開發(fā)工具,選中所有的開發(fā)工具,然后點(diǎn)擊“Next”按鈕進(jìn)行ADT的安裝。安裝完成后,在菜單“Window”中多了一個(gè)子菜單項(xiàng)“AndroidSDKandAVDManager”,如圖1-10所示。圖1-10ADT安裝完成后的界面
S4.安裝AndroidSDK
登錄到網(wǎng)站,找到頁面上的超鏈接“SDK下載”,進(jìn)入之后找到“Android2.3SDK下載”下載SDK包,文件名為“android-sdk_r08-windows.zip”,約有31.1MB,筆者將其解壓到D盤的根目錄下,如圖1-11所示。雙擊圖1-11中的可執(zhí)行文件“SDKManager.exe”,聯(lián)網(wǎng)在線安裝最新的AndroidSDK(截止2011年4月最新版本為Android3.0Revision1,本書中使用的版本為2.3.3Revision1),如圖1-12所示。筆者安裝了所有可用的SDK包,事實(shí)上,只安裝所需要的SDK包就可以了,這里推薦讀者只安裝最新的SDK包。圖1-12顯示SDK的安裝目錄為D:\android-sdk-windows,安裝完成后如圖1-13所示,此文件約有1.02GB。圖1-11AndroidSDK文件夾圖1-12AndroidSDK安裝過程圖1-13AndroidSDK安裝后的界面圖1-13中的“SDKPlatformAndroid2.3.3,API10,revision1”為本書采用的SDK包,在圖中標(biāo)有選中的橫條。
上述的步驟S1~S4完成了Android開發(fā)平臺(tái)所需要的四個(gè)軟件的安裝,D盤根目錄下會(huì)多出三個(gè)新目錄,如圖1-14所示。其中,android-sdk-windows為AndroidSDK軟件,eclipse目錄為eclipse集成開發(fā)環(huán)境,myWorkspace為存儲(chǔ)用戶應(yīng)用程序工程文件的目錄。下面的步驟S5~S6為配置和使用Android模擬器的操作過程。圖1-14D盤上與Android開發(fā)相關(guān)的目錄
S5.配置模擬器AVD(AndroidVirtualDevice)
雙擊文件“D:\eclipse\eclipse.exe”啟動(dòng)Eclipse軟件(可以為該文件在桌面上建立一個(gè)快捷方式),如圖1-15所示,點(diǎn)擊菜單項(xiàng)“Window|Preferences”,進(jìn)入圖1-16所示窗口。在圖1-16中的“SDKLocation:”一欄中輸入AndroidSDK的安裝目錄,筆者的安裝目錄為“D:\android-sdk-windows”,然后點(diǎn)擊“Apply”按鈕,則在圖1-16的列表框中顯示出所有可用的SDK,接著點(diǎn)擊“OK”按鈕完成SDK的裝配(這里的“Preferences”一般譯為“參數(shù)配置項(xiàng)”)。圖1-15Window菜單圖1-16配置AndroidSDK點(diǎn)擊圖1-15中的菜單項(xiàng)“Window|AndroidSDKandAVDManager”或單擊圖1-17中的快捷按鈕“OpenstheAndroidSDKandAVDManager”(在圖中是一個(gè)機(jī)器人圖標(biāo)),都將彈出圖1-18所示的窗口。圖1-17打開模擬器快捷方式圖1-18模擬器管理器在圖1-18中點(diǎn)擊“New”按鈕,進(jìn)入圖1-19所示界面。在圖1-19中填入模擬器的名字“Name”為“myAVD233”(這個(gè)名稱可以隨意取);在“Target”中選取“Android2.3.3–APILevel10”,表示模擬器搭載Android2.3.3系統(tǒng);在“SDCard”中輸入64,表示模擬器裝備了64MB的SD卡,這個(gè)數(shù)值不能太大,模擬器使用硬盤文件來模擬SD卡,如果SD卡的容量太大,則讀寫速度比較慢;“Skin”表示模擬器屏幕,可以隨意選取,這里使用缺省的WVGA800屏,分辨率為480?×?800。在圖1-19中點(diǎn)擊“CreateAVD”按鈕,進(jìn)入圖1-20所示窗口。圖1-19創(chuàng)建新的模擬器圖1-20創(chuàng)建了一個(gè)名為myAVD233的模擬器管理器可以通過如圖1-18和圖1-19所示的界面創(chuàng)建多個(gè)不同名稱的模擬器,它們會(huì)顯示在圖1-20的列表框中,這里只創(chuàng)建了一個(gè)模擬器myAVD233。在圖1-20中選中myAVD233模擬器,點(diǎn)擊“Start…”按鈕,將彈出一個(gè)小的模擬器啟動(dòng)設(shè)置窗口,如圖1-21所示。當(dāng)圖1-21中的復(fù)選框“Wipeuserdata”被選中時(shí),表示啟動(dòng)模擬器后清除用戶過去使用時(shí)創(chuàng)建的程序和數(shù)據(jù),保持一個(gè)“干凈”的模擬器環(huán)境。單擊“Launch”按鈕將彈出模擬器,等待幾分鐘后出現(xiàn)如圖1-22所示Android2.3.3模擬器窗口界面。圖1-21模擬器啟動(dòng)窗口圖1-22Android2.3.3模擬器窗口界面
S6.Android模擬器使用體驗(yàn)
通過圖1-22可以體驗(yàn)Android2.3.3的各項(xiàng)功能。使用Eclipse開發(fā)的在Android模擬器中合法運(yùn)行的應(yīng)用程序,可以直接部署到顯示分辨率相同的Android移動(dòng)設(shè)備上。一般地,需要根據(jù)應(yīng)用程序開發(fā)者的移動(dòng)設(shè)備(或智能手機(jī))的Android系統(tǒng)版本和顯示分辨率來設(shè)置模擬器。
這里使用SDK工具軟件創(chuàng)建一個(gè)SD卡文件zySD64.img;然后重新建立一個(gè)基于該SD卡文件的模擬器myAVD233SD64;接著,通過Eclipse向SD卡中拷入一首歌曲;最后,在模擬器中運(yùn)行“Music”應(yīng)用程序播放這首歌曲。
在命令提示符窗口下進(jìn)入到目錄D:\android-sdk-windows\tools中,輸入如圖1-23所示命令行,創(chuàng)建64MB大小的文件名為zySD64.img的SD卡文件(標(biāo)簽為zySD)。圖1-23創(chuàng)建SD卡文件圖1-23中,“mksdcard/?”命令行為顯示命令“mksdcard”的用法;命令行“mksdcard–lzySD64MzySD64.img”為創(chuàng)建SD卡的命令。創(chuàng)建的文件zySD64.img位于目錄“D:\android-sdk-windows\tools”下。
按照前述的圖1-18和圖1-19再次創(chuàng)建一個(gè)新的模擬器,圖1-19替換為圖1-24。在圖1-24中“SDCard”一欄中選擇文件“D:\android-sdk-windows\tools\zySD64.img”,模擬器的名稱為“myAVD233SD64”,其余設(shè)置與圖1-19相同。圖1-24創(chuàng)建使用外部文件zySD64.img作為SD卡的模擬器在圖1-24中點(diǎn)擊“CreateAVD”按鈕后,顯示界面如圖1-25所示。圖1-25中兩個(gè)模擬器的唯一區(qū)別在于:模擬器myAVD233關(guān)閉后再次啟動(dòng)時(shí),其SD卡的內(nèi)容會(huì)丟失;模擬器myAVD233SD64的SD卡內(nèi)容不會(huì)丟失,而是保留在文件zySD64.img中。圖1-24中的“Deviceramsize”可以由256調(diào)整到512,其上面一行的數(shù)字“24”可以調(diào)整為“48”。圖1-25具有兩個(gè)Android模擬器的模擬器管理器在圖1-25中選中模擬器“myAVD233SD64”,點(diǎn)擊“Start…”按鈕啟動(dòng)該模擬器。如果模擬器myAVD233仍然在運(yùn)行中,那么此時(shí)的myAVD233SD64模擬器的電話號(hào)碼將是“5556”,否則仍然是“5554”。
在Eclipse集成開發(fā)環(huán)境主界面(見圖1-17)下選擇菜單“Window|ShowView|Other…”或點(diǎn)擊右上角的“OpenPerspective”快捷按鈕,如圖1-26所示。在圖1-26中點(diǎn)擊其右上角彈出菜單的“Other…”項(xiàng),然后彈出“OpenPerspective”窗口,選中其中的DDMS項(xiàng),再點(diǎn)擊“OK”按鈕進(jìn)入圖1-27所示界面。DDMS是DalvikDebugMonitorService的首字母縮寫,即調(diào)試監(jiān)視服務(wù)器,用于調(diào)試程序、檢測(cè)進(jìn)程和堆信息、顯示LogCat信息(使用Logcat命令顯示的程序?qū)崟r(shí)運(yùn)行信息)、模擬信息和電話功能、虛擬地理坐標(biāo)等,下面將借助DDMS向SD卡中拷入數(shù)據(jù)文件。圖1-26打開DDMS視圖的操作圖1-27DDMS界面重新啟動(dòng)模擬器zyAVD233SD64,在應(yīng)用程序界面(即點(diǎn)擊圖1-22中下方的16個(gè)小方塊堆后進(jìn)入的界面)依次選擇“Settings|Language&Keyboard|SelectLanguage|中文簡(jiǎn)體”可將模擬器界面設(shè)置為中文。在應(yīng)用程序界面點(diǎn)擊“音樂”圖標(biāo),則進(jìn)入圖1-28所示界面。圖1-28音樂播放器應(yīng)用程序的工作界面1.3.2基于Ubuntu的Android開發(fā)平臺(tái)
S1.安裝Ubuntu操作系統(tǒng)
在Windows系統(tǒng)下,在網(wǎng)站/上下載Ubuntu操作系統(tǒng),筆者下載的版本為UbuntuDesktopEdition10.1064-bit版,建議讀者下載最新版本的64位Ubuntu系統(tǒng)。下載后的文件名為ubuntu-10.10-desktop-amd64.iso,將其加載到虛擬光驅(qū)中。然后,在網(wǎng)站http:///上下載wubi.exe文件,該可執(zhí)行文件用于在當(dāng)前Windows系統(tǒng)下安裝Ubuntu系統(tǒng)。運(yùn)行wubi.exe文件即可完成Ubuntu系統(tǒng)的安裝,重新啟動(dòng)電腦,將出現(xiàn)提示要求選擇操作系統(tǒng)。選中“Ubuntu”可進(jìn)入U(xiǎn)buntu系統(tǒng),選中“MicrosoftWindowsXPProfessional”則進(jìn)入WindowsXP系統(tǒng)(筆者使用的是Windows系統(tǒng))。
S2.安裝EclipseSDK集成開發(fā)環(huán)境
進(jìn)入到Ubuntu系統(tǒng)后,可以通過“UbuntuSoftwareCenter”直接安裝Eclipse,簡(jiǎn)單方便。也可以采用另一種方法,即使用Ubuntu系統(tǒng)的FireFox瀏覽器登錄網(wǎng)站http:///,下載EclipseClassic3.6.1Linux64-bit版本,建議讀者下載最新版本的基于64位Linux的Eclipse,下載后的文件名為eclipse-SDK-3.6.1-linux-gtk-x86_64.tar.gz。解壓后的文件存放在目錄…/myeclipse/下,myeclipse是筆者創(chuàng)建的目錄,如圖1-29所示。運(yùn)行圖1-29中eclipse目錄下的eclipse可執(zhí)行文件即可啟動(dòng)EclipseSDK軟件,將該啟動(dòng)文件發(fā)送到桌面建立快捷連接方式“Linktoeclipse”。圖1-29Eclipse軟件目錄
S3.安裝AndroidSDK
從網(wǎng)上下載android-sdk_r08-linux_86.tgz,將其解壓到…/myeclipse下,如上圖1-29所示。運(yùn)行…/myelipse/android-sdk-linux_86/tools/android,在線安裝的完整AndroidSDK大約有1.6GB。
在Ubuntu系統(tǒng)下,點(diǎn)擊“System|Administration|SynapticPackageManager”進(jìn)入圖1-30所示界面并安裝“ia32-libs”組件,該組件是在64位Ubuntu系統(tǒng)中執(zhí)行32位應(yīng)用程序的運(yùn)行支持庫。圖1-30安裝ia32-libs
S4.安裝ADT插件
啟動(dòng)Eclipse軟件,如圖1-31所示,與Windows下的Eclipse界面不同的地方在于其軟件的“關(guān)閉”、“最小化”和“最大化”控制按鈕位于窗口的左上角,而不是右上角。Eclipse軟件的Help菜單如圖1-32所示,點(diǎn)擊“Help|InstallNewSoftware…”進(jìn)入到圖1-33所示界面,在圖1-33的“Workwith”欄中輸入“/android/eclipse”,按下回車鍵后下面的列表框中將出現(xiàn)“DeveloperTools”,選中“DeveloperTools”,點(diǎn)擊“Next>”按鈕安裝ADT插件。安裝完成后,Eclipse軟件菜單“Window”中多了一項(xiàng)子菜單“AndroidSDKandAVDManager”,如圖1-34所示。圖1-31Eclipse軟件界面圖1-32Eclipse軟件的Help菜單圖1-33安裝ADT插件圖1-34Eclipse軟件Window菜單
S5.啟動(dòng)Android模擬器
在圖1-34中點(diǎn)擊菜單項(xiàng)“Window|Preferences”對(duì)AndroidSDK進(jìn)行配置,之后點(diǎn)擊“Window|AndroidSDKandAVDManager”彈出圖1-35所示窗口。在圖1-35所示界面中點(diǎn)擊“New…”按鈕彈出圖1-36所示窗口,在圖1-36中配置一個(gè)新的模擬器,名稱為myAVD233,它基于Android2.3.3–APILevel10,內(nèi)置64MB的SD卡,使用HVGA顯示屏。然后,點(diǎn)擊“CreateAVD”按鈕進(jìn)入圖1-37所示窗口。在圖1-37中,提示HVGA為320×480的分辨率,點(diǎn)擊右下角的“Launch”按鈕將創(chuàng)建一個(gè)新的模擬器myAVD233,如圖1-38所示。在圖1-38中選中“myAVD233”模擬器,然后,點(diǎn)擊“Start…”按鈕啟動(dòng)該模擬器,如圖1-39所示。盡管圖1-39與圖1-22的顯示分辨率不同,但它們本質(zhì)上是相同的,模擬器中集成了一些常用的應(yīng)用程序,可以在圖1-39中體驗(yàn)Android系統(tǒng)特色及其應(yīng)用軟件的操作特點(diǎn)。圖1-35Android模擬器管理器圖1-36配置模擬器圖1-37模擬器加載選項(xiàng)圖1-38具有一個(gè)名為myAVD233模擬器的模擬器管理器圖1-39Android模擬器myAVD233
S6.HelloWorld工程
事實(shí)上,使用基于Ubuntu系統(tǒng)的Eclipse軟件和基于Windows系統(tǒng)的Eclipse軟件創(chuàng)建Android應(yīng)用程序的方法完全相同,這里給出在Ubuntu系統(tǒng)下使用Eclipse軟件開發(fā)Android應(yīng)用程序的過程,而本書后面介紹的應(yīng)用程序開發(fā)均基于Windows系統(tǒng)下的Eclipse集成開發(fā)環(huán)境。此處對(duì)HelloWorld應(yīng)用程序的代碼和工作原理不進(jìn)行介紹,而在第三章介紹基于Windows系統(tǒng)的Eclipse軟件的使用時(shí)將深入介紹該應(yīng)用程序的源代碼和工作原理。
在Eclipse軟件界面(見圖1-31)下,點(diǎn)擊菜單“File|New|Project.”,彈出如圖1-40所示窗口。圖1-40新建工程向?qū)г趫D1-40中選擇“AndroidProject”,然后點(diǎn)擊“Next>”按鈕,彈出如圖1-41和圖1-42所示界面。這兩幅圖是同一個(gè)圖,由于圖幅內(nèi)容過多,因此用兩個(gè)圖分別表示垂直滾動(dòng)條的不同位置。在圖1-41所示界面中的“Projctname”欄輸入“uMyHello”,即工程名為uMyHello,然后選中“Createnewprojectinworkspace”,即在工作區(qū)中創(chuàng)建新工程。在圖1-42中選擇“Android2.3.3”作為目標(biāo)平臺(tái),然后依次輸入應(yīng)用名稱、包名稱、活動(dòng)名稱為“myHello”、“my.uap.pack”和“MyHello”,最后點(diǎn)擊“Finish”按鈕完成創(chuàng)建新工程向?qū)?,進(jìn)入圖1-43所示窗口。圖1-41創(chuàng)建新工程(1)圖1-42創(chuàng)建新工程(2)圖1-43uMyHello工程界面在圖1-44中選擇菜單“Run|RunAs|AndroidApplication”,則模擬器中可顯示出該應(yīng)用程序的執(zhí)行結(jié)果,如圖1-45所示,顯示“HelloWorld,MyHello!”字符串。圖1-44“Run”菜單圖1-45模擬器運(yùn)行結(jié)果 1.4小結(jié)
Android系統(tǒng)是基于Linux內(nèi)核的嵌入式操作系統(tǒng),與WindowsCE等嵌入式操作系統(tǒng)一樣,Android系統(tǒng)主要針對(duì)智能手機(jī)和移動(dòng)設(shè)備,具有體積小、實(shí)時(shí)性強(qiáng)、功耗低和界面人性化等優(yōu)點(diǎn)。Android系統(tǒng)采用分層結(jié)構(gòu),與硬件直接接觸的底層為Linux內(nèi)核(第一層),其上為Android系統(tǒng)庫和Android應(yīng)用程序運(yùn)行環(huán)境(第二層),第三層為Android應(yīng)用程序框架,直接與用戶交互的頂層為應(yīng)用程序?qū)?第四層)。與其他嵌入式操作系統(tǒng)相比,Android系統(tǒng)的最大優(yōu)勢(shì)在于兩方面,即公開源代碼和免費(fèi)使用。此外,Android系統(tǒng)的安全性和網(wǎng)絡(luò)功能非常強(qiáng)大,因此Android系統(tǒng)很適合用于教學(xué)和科研。可以借助Windows系統(tǒng)或Ubuntu系統(tǒng)開發(fā)Android應(yīng)用程序,如果基于Ubuntu系統(tǒng)開發(fā)Android應(yīng)用程序,需要使用的開發(fā)軟件即Eclipse、JDK、AndroidSDK、ADT等均是免費(fèi)的,這一特點(diǎn)極大地推動(dòng)了Android應(yīng)用程序設(shè)計(jì)的普及。Android系統(tǒng)模擬器的功能十分強(qiáng)大,基于模擬器運(yùn)行良好的應(yīng)用程序均可以在真實(shí)的移動(dòng)設(shè)備上良好地運(yùn)行。第2章Java語言2.1Java程序語法與控制
2.2Java基本數(shù)據(jù)類型
2.3Java類
2.4Java文件操作
2.5在命令行窗口中運(yùn)行Java程序2.6Java圖形界面2.7小結(jié)
2.1Java程序語法與控制
Java程序文件的擴(kuò)展名為?.java,每個(gè)程序文件中只能包含一個(gè)public類,即公有類,public是可見性修飾符,用public定義的類、方法(或稱函數(shù))或數(shù)據(jù)域(或稱變量)可以被任何類訪問。Java程序的入口點(diǎn)是main方法,定義在公有類中,main方法的原型為
publicstaticvoidmain(String[]args){}
與其他高級(jí)語言程序設(shè)計(jì)相同,Java語言程序具有三種基本的程序控制方式,即順序、分支(或選擇)和循環(huán)執(zhí)行方式,在main方法中可使用三種程序控制方式進(jìn)行程序設(shè)計(jì)。2.1.1順序方式
順序方式是指Java語句按照先后順序依次執(zhí)行并得到計(jì)算結(jié)果的程序執(zhí)行方式,這是Java語言的總體執(zhí)行方式(由于類只是數(shù)據(jù)結(jié)構(gòu),因此類中定義成員數(shù)據(jù)和方法時(shí)不分先后,成員方法中的變量必須先定義后使用)。下面的例2.1為輸入一個(gè)攝氏溫度值,將其轉(zhuǎn)化為華氏溫度值。通過該例詳細(xì)介紹借助Eclipse編寫Java程序的步驟,本章中所有實(shí)例的創(chuàng)建步驟也都與此類似,因此后面實(shí)例的創(chuàng)建步驟就省略了。
例2.1
攝氏溫度值轉(zhuǎn)化為華氏溫度值。
攝氏溫度值轉(zhuǎn)化為華氏溫度值的關(guān)系式為
Fah=1.8×Cel+32
上式中,F(xiàn)ah表示華氏溫度,Cel表示攝氏溫度。下面分步驟介紹該實(shí)例的實(shí)現(xiàn)方法。
S1.創(chuàng)建工程ex02_01
在Eclipse軟件主界面(見圖1-7)中,選擇菜單項(xiàng)“File|New|JavaProject”,彈出如圖2-1所示界面。在圖2-1中輸入工程名為“ex02_01”,保存在目錄“D:\myWorkspace\ex02_01”下,然后直接點(diǎn)擊“Finish”按鈕完成創(chuàng)建工程向?qū)В鐖D2-2所示。在圖2-2中,顯示了空的工程ex02_01,其中包含一個(gè)“src”標(biāo)簽,該標(biāo)簽下存放Java源程序文件,此外,還包含了JRESystemLibrary,即Java程序運(yùn)行環(huán)境庫。在圖2-2界面中,點(diǎn)擊菜單項(xiàng)“File|New|Class”即可添加新類,進(jìn)入圖2-3所示界面。圖2-1新建Java工程界面圖2-2空的工程ex02_01圖2-3創(chuàng)建新Java類在圖2-3中輸入包名為“cn.jxufe.zhangyong”,包(Package)的名稱要求具有全球唯一性。包是類的容器,允許不同包中存在相同名稱的類。包類似于C#語言中的命名空間,在引入了包的概念后,不同的程序員在命名類名時(shí)可以更加隨意且不會(huì)導(dǎo)致類名沖突。這里的包名“cn.jxufe.zhangyong”表示“中國.江西財(cái)經(jīng)大學(xué).張勇”,包名一般從大地名至小地名依次書寫,名稱間用“點(diǎn)號(hào)”分開,以這種命名規(guī)范命名的包可有效地防止同名包的出現(xiàn),本章中的所有實(shí)例均使用包名“cn.jxufe.zhangyong”,因此必需保證這個(gè)包里面沒有同名的類出現(xiàn)。然后,輸入類名為“MyEx0201”,類的命名習(xí)慣要求首字母大寫。接著,點(diǎn)擊“Finish”按鈕完成創(chuàng)建Java類向?qū)?,進(jìn)入圖2-4所示界面。圖2-4“Helloworld!”程序代碼
S2.控制臺(tái)顯示“Helloworld!”
在圖2-4中輸入Java程序代碼如下:
1packagecn.jxufe.zhangyong;
2
3publicclassMyEx0201{
4 publicstaticvoidmain(String[]args){
5 System.out.println("Helloworld!");
6 }
7}
S3.攝氏溫度轉(zhuǎn)換為華氏溫度的示例程序
圖2-4是一個(gè)完整的程序,輸出“Helloworld!”信息,為了實(shí)現(xiàn)攝氏溫度轉(zhuǎn)換為華氏溫度的功能,改寫程序文件MyEx0201.java的代碼如下:
1packagecn.jxufe.zhangyong;
2
3publicclassMyEx0201{
4 publicstaticvoidmain(String[]args){
5 doubleCel=36.5;
6 doubleFah;
7 Fah=1.8*Cel+32.0;
8 System.out.println(Cel+"deg.C="
9 +Fah+"deg.F.");
10 }
11}
上述代碼中,第5行定義雙精度浮點(diǎn)數(shù)變量Cel并初始化為36.5,第6行定義雙精度浮點(diǎn)數(shù)變量Fah,第7行根據(jù)公式計(jì)算新的Fah的值,第8、9行調(diào)用方法System.out.println在控制臺(tái)輸出信息“36.5deg.C=97.7deg.F.”,如圖2-5所示。
圖2-5所示工程是一個(gè)簡(jiǎn)單的Java順序執(zhí)行程序示例,第5~9行的語句按先后順序依次執(zhí)行,程序的順序執(zhí)行方式是最基本的程序控制方式。圖2-5溫度轉(zhuǎn)換程序及輸出結(jié)果2.1.2分支方式
分支方式是根據(jù)條件關(guān)系式的邏輯值進(jìn)行判斷,有條件地執(zhí)行某些語句組。有兩種條件語句,即if-else語句和switch語句,其基本語法分別為:
if(布爾表達(dá)式){
布爾表達(dá)式為真時(shí)執(zhí)行的語句組;
}
else{
布爾表達(dá)式為假時(shí)執(zhí)行的語句組;
}
和當(dāng)表達(dá)式的值不等于上述的“值1”、“值2”、…、“值N”時(shí)執(zhí)行的語句組;
}
if語句和switch語句均可以嵌套,下面的例2.2和例2.3分別介紹了這兩種條件語句的使用方法。
例2.2
求解一元二次方程的根。
已知一元二次方程ax2?+?bx?+?c?=?0,任意輸入三個(gè)系數(shù)a、b和c,計(jì)算未知數(shù)x的值。新建工程ex02_02,在工程ex02_02中新建類MyEx0202(對(duì)應(yīng)的文件名為MyEx0202.java,即類名與文件名相同,所在的包為cn.jxufe.zhangyong)。MyEx0202.java文件的程序代碼如下所示:在C語言中使用庫函數(shù)時(shí)需要借助于include關(guān)鍵字,在C#中使用use關(guān)鍵字。在Java程序中,如果需要調(diào)用其他包中的類所包含的公有方法和數(shù)據(jù)時(shí),必需借助于import關(guān)鍵字導(dǎo)入這些包和類,如上述程序段中的第3~5行。第3~4行為第20~21行的方法服務(wù),第5行為第12行的方法服務(wù)。導(dǎo)入一個(gè)包(和包中的某個(gè)類)非常方便,例如,在程序中書寫了“Scannerscanner=newScanner(System.in);”語句后,會(huì)自動(dòng)提示程序員導(dǎo)入java.util.Scanner,只需要在提示的右鍵彈出菜單中點(diǎn)一下就會(huì)在第5行添加“importjava.util.Scanner;”語句。因此,所有的import語句都是用這種方法創(chuàng)建的,不需要程序員書寫,比起C語言的“#include”包括頭文件語句更加方便。上述程序段的main方法代碼為第9~34行。第9行定義三個(gè)double型變量a、b和c;第10行定義了一個(gè)具有兩個(gè)元素的double型數(shù)組x,必須記住Java這種定義數(shù)組的方法,使用new關(guān)鍵字為元素個(gè)數(shù)開辟空間;第11行在控制臺(tái)輸出提示信息“Input3coefficients:”;第12行用類Scanner創(chuàng)建一個(gè)scanner對(duì)象,同時(shí)用類Scanner的構(gòu)造方法對(duì)它進(jìn)行初始化(在第2.3節(jié)中將詳細(xì)介紹構(gòu)造方法);第13~15行調(diào)用scanner對(duì)象的方法nextDouble從控制臺(tái)讀入雙精度浮點(diǎn)數(shù),并分別賦給變量a、b和c;第16行判斷a的絕對(duì)值是否小于0.00000001,即判斷a是否為0。如果表達(dá)式Math.abs(a)<1e-8為真,則認(rèn)為a?=?0,于是第17行輸出“Notaquadraticequation!”,說明不是一元二次方程;否則,程序執(zhí)行第19~34行代碼。第20~21行用類DecimalFormat創(chuàng)建一個(gè)對(duì)象df;第21行調(diào)用對(duì)象df的方法setMaximumFractionDigits設(shè)置小數(shù)顯示時(shí)保留2位小數(shù),即當(dāng)調(diào)用對(duì)象df的方法format時(shí),將方法format的輸入?yún)?shù)設(shè)置為只顯示2位小數(shù)(見第25行)。第22行判斷b*b>=4*a*c是否為真,如果為真,則方程的兩個(gè)根x[0]和x[1]均為實(shí)數(shù)(數(shù)組的下標(biāo)從0開始索引);第23~24行計(jì)算兩個(gè)根的值;第25~26行在控制臺(tái)輸出兩個(gè)根的值,為使輸出的根只保留兩位小數(shù),使用方法df.format格式化輸出。如果b*b>=4*a*c為假,則執(zhí)行第29~32行代碼,此時(shí)兩個(gè)根為復(fù)數(shù),用x[0]存放根的實(shí)部,x[1]存放根的一個(gè)虛部,第31~32行在控制臺(tái)輸出這兩個(gè)復(fù)根。圖2-6和圖2-7給出了例2.2的兩次執(zhí)行結(jié)果,說明程序工作正常。其中使用if-else語句的兩級(jí)嵌套實(shí)現(xiàn)了一元二次方程的求根運(yùn)算。圖2-6實(shí)例2.2運(yùn)行結(jié)果:a?=?2、b?=?5和c?=-4圖2-7實(shí)例2.2運(yùn)行結(jié)果:a?=?3、b?=?7和c?=?6
例2.3
人民幣兌換外幣計(jì)算。
假設(shè)已知英鎊(pound)、港幣(HKD)、美元(dollar)、日元(yen)、歐元(euro)和新加坡元(SGD)對(duì)人民幣的匯率分別為10.62、0.84、6.53、0.078、9.42和5.22,輸入人民幣可計(jì)算得到其兌換的外幣值。新建工程ex02_03,在工程ex02_03中新建類MyEx0203(對(duì)應(yīng)的文件名為MyEx0203.java,所在的包名為cn.jxufe.zhangyong)。MyEx0203.java文件的程序代碼如下所示:圖2-8和圖2-9給出了例2.3的兩次執(zhí)行結(jié)果,分別是將1000元人民幣兌換成153.14美元和將2000元人民幣兌換為383.14新加坡元,這說明程序運(yùn)行正常。例2.3說明了switch語句的用法,從例2.3可以體會(huì)到,switch語句實(shí)現(xiàn)的程序控制,if-else語句也能實(shí)現(xiàn)。圖2-8例2.3程序運(yùn)行結(jié)果(1000元兌換美元)圖2-9例2.3程序運(yùn)行結(jié)果(2000元兌換新加坡元)2.1.3循環(huán)方式
Java語言提供了三種循環(huán)控制語句,即while型、do-while型和for型循環(huán),這三種循環(huán)控制語句與C語言的語法相同,其基本語法如下:
while(條件表達(dá)式){
條件表達(dá)式為真時(shí)執(zhí)行的語句組(即循環(huán)體);
}
Do{
循環(huán)體(先執(zhí)行一次后判斷條件表達(dá)式的值,如果為真則再次執(zhí)行循環(huán)體;與while型的區(qū)別在于當(dāng)條件表達(dá)式為假時(shí),循環(huán)體可被執(zhí)行一次);圖2-10為例2.4的執(zhí)行結(jié)果。圖2-10例2.4程序運(yùn)行結(jié)果
例2.5
計(jì)算九九乘法表。
例2.5使用for型循環(huán)方式計(jì)算九九乘法表。新建工程ex02_05,在工程ex02_05中新建類MyEx0205(對(duì)應(yīng)文件名為MyEx0205.java,所在的包為cn.jxufe.zhangyong)。MyEx0205.java文件的程序代碼如下所示:上述代碼的輸出結(jié)果如圖2-11所示。第5~10行嵌套了兩個(gè)for型循環(huán),外層的for型循環(huán)中i從1步進(jìn)到9,步長為1,表示圖2-11中的第1至9行;第6~8行的for型循環(huán)從1步進(jìn)到i,步長為1,表示圖2-11中的第1至i列。九九乘法表中第i行第j列的乘法算式為計(jì)算i和j的乘積,如圖2-11所示。若i等于6,j等于5,即第6行第5列的式子為“6*5=30”,于是循環(huán)執(zhí)行第7行輸出九九乘法表中的每個(gè)乘法式子。第9行表示每輸出一行后添加一個(gè)回車換行。圖2-11例2.5計(jì)算的九九乘法表2.1.4異常處理
異常處理也是一種程序控制方式。當(dāng)程序運(yùn)行過程中產(chǎn)生了錯(cuò)誤(例如,數(shù)值溢出、輸入無效、數(shù)組越界等),即所謂的運(yùn)行錯(cuò)誤,往往會(huì)導(dǎo)致整個(gè)程序運(yùn)行突然中斷或退出,而程序員無法知道程序退出的原因。異常處理的作用在于當(dāng)程序運(yùn)行發(fā)生錯(cuò)誤時(shí),捕捉運(yùn)行錯(cuò)誤類型(稱為異常),并能保證程序仍然正常執(zhí)行。Java異常處理的功能十分強(qiáng)大,其基本用法為:當(dāng)try“被監(jiān)視的語句組”中的某條語句發(fā)生異常時(shí),其后的程序不再執(zhí)行,而是跳到catch語句處,依次判斷各個(gè)catch的異常類型是否與發(fā)生的異常相匹配,如果匹配,則將發(fā)生的異常(對(duì)象)賦給catch語句,執(zhí)行該catch塊中的語句。無論異常是否發(fā)生,都要執(zhí)行finally語句塊中的全部語句,這部分語句一般用作內(nèi)存釋放和關(guān)閉已打開的文件對(duì)象等。
例2.6
整數(shù)除法(除以0)和輸入類型不匹配異常。
從控制臺(tái)輸入兩個(gè)整數(shù),計(jì)算它們的商。新建工程ex02_06,在工程ex02_06中新建類MyEx0206(對(duì)應(yīng)文件名為MyEx0206.java,所在的包為cn.jxufe.zhangyong)。MyEx0206.java文件的程序代碼如下所示:圖2-12~圖2-14顯示了例2.6的運(yùn)行結(jié)果,圖2-12為正常運(yùn)行,圖2-13因?yàn)檩斎氤霈F(xiàn)了浮點(diǎn)數(shù)12.2而發(fā)生輸入類型不匹配異常,圖2-14因輸入除數(shù)為0而發(fā)生除以0異常。圖2-12例2.6運(yùn)行結(jié)果(無異常)圖2-13例2.6的運(yùn)行結(jié)果(輸入類型不匹配異常)圖2-14例2.6的運(yùn)行結(jié)果(除以0異常) 2.2Java基本數(shù)據(jù)類型
2.2.1數(shù)值
數(shù)值類型包括整數(shù)類型和浮點(diǎn)數(shù)類型,整數(shù)類型包括四類,即字節(jié)byte、短整型short、整型int和長整型long,依次占有存儲(chǔ)字節(jié)數(shù)為1、2、4和8;浮點(diǎn)數(shù)類型包括兩類即單精度浮點(diǎn)數(shù)型float和雙精度浮點(diǎn)數(shù)型double,分別占有存儲(chǔ)字節(jié)數(shù)為4和8。double和float都用來表示小數(shù),為了區(qū)分這兩種表示,float型小數(shù)后面需要添加“f”或“F”,即0.53F被視為float型,而0.53被視為double型。各種數(shù)值類型間可以進(jìn)行強(qiáng)制類型轉(zhuǎn)換,這一點(diǎn)與C語言相同,例如,“inti=(int)15.3;”將double型數(shù)15.3強(qiáng)制轉(zhuǎn)化為整型數(shù)15。強(qiáng)制類型轉(zhuǎn)換也稱為顯式轉(zhuǎn)換,當(dāng)一個(gè)表達(dá)式中出現(xiàn)了int型和double型時(shí),則自動(dòng)將int型轉(zhuǎn)換為double型進(jìn)行計(jì)算,這種類型轉(zhuǎn)換稱為隱式轉(zhuǎn)換,例如,3/6.0將得到0.5。
與數(shù)值類型數(shù)據(jù)相關(guān)的Java算術(shù)運(yùn)算符包括加、減、乘、除和求余,即“+”、“-”、“*”、“/”和“%”;Java賦值運(yùn)算符為“=”;與C語言相同,Java語言支持自增和自減運(yùn)算符,即“++”和“--”;Java語言支持復(fù)合賦值運(yùn)算符,即“+=”、“-=”、“*=”、“/=”和“%=”。注意,復(fù)合運(yùn)算符中的兩個(gè)基本運(yùn)算符間沒有空格,例如“+=”是不正確的復(fù)合運(yùn)算符。
例2.7
數(shù)值類型演示。
新建工程ex02_07,在工程ex02_07中新建類MyEx0207(對(duì)應(yīng)文件名為MyEx0207.java,所在的包為cn.jxufe.zhangyong)。MyEx0207.java文件的程序代碼如下所示:上述代碼中,第5行定義byte型變量a1并初始化為0xF1(十六進(jìn)制數(shù)形式),由于Java不支持無符號(hào)型數(shù),因此a1為-15。第6行定義short型變量a2并初始化為0xF001,此時(shí)a2等于-4095。第7行定義整型變量a3,由于a3占4個(gè)字節(jié),這里0xF001相當(dāng)于0x0000F001,因此a3為61441。第8行定義長整型變量a4,這里使用隱式轉(zhuǎn)換,a4等于61441。第9行定義double型變量b1并賦初值3/6.0,即0.5。第10行定義float型變量b2并賦初值為15.3000001。第11行定義double型變量b3并賦初值15.3000001。第14~15行輸出各個(gè)整型數(shù)變量的值。第16~17行輸出各個(gè)浮點(diǎn)數(shù)變量的值,如圖2-15所示。從圖2-15中可以看出,float型數(shù)b1的精度比double型數(shù)b2的精度低,b1無法精確識(shí)別15.3000001。圖2-15例2.7輸出結(jié)果2.2.2字符
Java支持Unicode碼,即用兩個(gè)字節(jié)表示的字符,Unicode碼(常被譯為統(tǒng)一碼)包含了ASCII碼,幾乎可以表示地球上現(xiàn)有的所有人類語言符號(hào)。因此,一個(gè)Java字符占2個(gè)字節(jié)。定義的字符用兩個(gè)單引號(hào)括起來,例如“charch1='A';”。如果字符不是ASCII,可以使用該字符的Unicode碼值來定義字符,例如“charch2='\u03b1';”,這里的03b1是十六進(jìn)制形式表示的碼值。與C語言相同,字符型數(shù)據(jù)支持自增和自減運(yùn)算符。字符型數(shù)據(jù)與數(shù)值型數(shù)據(jù)可以相互轉(zhuǎn)換,一般借助于顯式轉(zhuǎn)換方式。
例2.8
大寫字母轉(zhuǎn)換為小寫字母。
例2.8執(zhí)行結(jié)果為:輸入一個(gè)大寫字母,輸出其對(duì)應(yīng)的小寫字母。新建工程ex02_08,在工程ex02_08中新建類MyEx0208(對(duì)應(yīng)文件名為MyEx0208.java,所在的包為cn.jxufe.zhangyong)。MyEx0208.java文件的程序代碼如下所示:上述代碼中,第7行定義了一個(gè)控制臺(tái)輸入對(duì)象scanner;第8行在控制臺(tái)輸出提示信息“Inputaletter:”;第9行從控制臺(tái)讀入字符串的值并賦給字符串變量str,scanner不支持字符的讀入;第10行從字符串str中提取第一個(gè)字符,賦給字符變量ch,這里使用了字符串的方法charAt。第11~13行判斷字符ch是否為大寫字母,如果第11行為真,即字符ch為大寫字母,則第12行將其轉(zhuǎn)化為小寫字母。第14行輸出轉(zhuǎn)化結(jié)果,如圖2-16所示。圖2-16例2.8運(yùn)行結(jié)果
Java語言中常用的轉(zhuǎn)義字符如表2-1所示。表2-1Java語言常用轉(zhuǎn)義字符2.2.3字符串
Java中聲明字符串變量時(shí)使用String關(guān)鍵字(實(shí)際上是String類),字符串聲明時(shí)需要初始化,字符串類型為引用類型(即字符串變量是指向字符串的地址),一旦創(chuàng)建后就不能更改字符串的值(注:可以在字符串尾部添加字符串)。如果要?jiǎng)?chuàng)建一個(gè)可以改變內(nèi)容的字符串,需要借助StringBuffer類或StringBuilder類,這兩個(gè)類都通過操作字符緩沖區(qū)來更改字符串的值,常用的方法有append、insert、substring、charAt、setLength、delete和toString等,它們分別表示追加字符串、插入字符串、定位部分字符串、定位字符串中的字符、設(shè)置字符串緩沖區(qū)的長度、刪除部分字符串和返回字符串。
例2.9
字符串操作。
新建工程ex02_09,在工程ex02_09中新建類MyEx0209(對(duì)應(yīng)文件名為MyEx0209.java,所在的包為cn.jxufe.zhangyong)。MyEx0209.java文件的程序代碼如下所示:例2.9的運(yùn)行結(jié)果如圖2-17所示。圖2-17例2.9運(yùn)行結(jié)果2.2.4布爾數(shù)
Java語言中,邏輯真為true,邏輯假為false,而且只有這兩個(gè)是布爾數(shù)。Java語言的布爾運(yùn)算符如表2-2所示,參與布爾運(yùn)算符的只能是布爾數(shù)。表2-2布?爾?運(yùn)?算?符
Java語言的關(guān)系運(yùn)算符如表2-3,關(guān)系運(yùn)算符的結(jié)果為布爾數(shù)。表2-3關(guān)?系?運(yùn)?算?符2.2.5數(shù)組
Java語言中定義數(shù)組的方法為“數(shù)據(jù)類型[]數(shù)組名;”,例如定義包含20個(gè)元素的double型一維數(shù)組arr,其定義為“double[]arr=newdouble[20];”或“double[]arr;arr=newdouble
[20];”,這一點(diǎn)與C++相同。也可以在定義數(shù)組時(shí)對(duì)數(shù)組進(jìn)行初始化,例如,“double[]arr1={12.3,2.6,7.9,8.8};”,相當(dāng)于語句組“double[]arr1=newdouble[4];arr1[0]=12.3;arr1[1]=
2.6;arr1[2]=7.9;arr1[3]=8.8;”。Java數(shù)組的下標(biāo)從0開始索引。
Java語言也可以定義高維數(shù)組,例如,“double[][]arr2=newdouble[4][5]”定義了一個(gè)4行、5列的二維數(shù)組,第一個(gè)元素的腳標(biāo)為[0][0],最后一個(gè)元素的腳標(biāo)為[3][4]。對(duì)于Java數(shù)組,可以使用foreach循環(huán)方法遍歷數(shù)組中的所有元素,可以借助Arrays類中的方法處理數(shù)組元素,如例2.10所示。
例2.10
數(shù)組演示實(shí)例。
例2.10的功能為:產(chǎn)生10個(gè)隨機(jī)數(shù),對(duì)它們按從小到大的順序進(jìn)行排序,并計(jì)算它們的和。新
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代企業(yè)現(xiàn)金流分析與優(yōu)化策略
- 國慶節(jié)漢服節(jié)活動(dòng)方案
- 環(huán)境安全教育在校園的推廣與實(shí)踐
- Unit 4 Natural disasters Project 說課稿-2024-2025學(xué)年高中英語人教版(2019)必修第一冊(cè)
- 3 地球的形狀說課稿-2023-2024學(xué)年大象版科學(xué)四年級(jí)下冊(cè)
- 2023六年級(jí)語文上冊(cè) 第三單元 12 故宮博物院說課稿新人教版
- Unit1 Making friends Part C(說課稿)-2024-2025學(xué)年人教PEP版(2024)英語三年級(jí)上冊(cè)001
- 2024年四年級(jí)品社下冊(cè)《第三單元 交通連著你我他》說課稿 山東版
- 27巨人的花園 說課稿 -2023-2024學(xué)年語文四年級(jí)下冊(cè)統(tǒng)編版
- Module 3 Unit 2 You can use the computers.(說課稿)-2023-2024學(xué)年外研版(一起)英語五年級(jí)下冊(cè)001
- 2023年北京市平谷區(qū)中考英語二模試卷
- 變壓器更換施工方案
- 【高分復(fù)習(xí)筆記】陳澄《新編地理教學(xué)論》筆記和課后習(xí)題詳解
- 安徽新宸新材料有限公司年產(chǎn)6000噸鋰離子電池材料雙氟磺酰亞胺鋰項(xiàng)目環(huán)境影響報(bào)告書
- 日本酒類消費(fèi)行業(yè)市場(chǎng)分析報(bào)告
- GB/T 29594-2013可再分散性乳膠粉
- 西子奧的斯電梯ACD2調(diào)試說明書
- 成長感恩責(zé)任高中主題班會(huì)-課件
- 建設(shè)項(xiàng)目全過程工程咨詢服務(wù)指引(咨詢企業(yè)版)(征求意見稿)
- 分手的協(xié)議書模板(5篇)
- 2020年度安徽省中考數(shù)學(xué)科目試卷
評(píng)論
0/150
提交評(píng)論