




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Java基礎(chǔ)教程基礎(chǔ)適合初學(xué)者閱讀請?zhí)顚懝久Q第1部分 Java基礎(chǔ)程序設(shè)計(jì) Java語言介紹 簡單的Java程序 Java中的變量與數(shù)據(jù)類型 運(yùn)算符、表達(dá)式與語句 循環(huán)與選擇結(jié)構(gòu) 數(shù)組與方法的使用第1章認(rèn)識JavaJava的歷史Java來自于Sun公司的個叫Green的項(xiàng)目,其原先的目的是為家用電子消費(fèi)產(chǎn) 品開發(fā)個分布式代碼系統(tǒng),這樣就可以把E-mail發(fā)給電冰箱、電視機(jī)等家用電曙, 對它們進(jìn)行控制,和它們進(jìn)行信息交流。開始他們準(zhǔn)備采用C+,但C+太復(fù)雜,安 全性差,最后基于C+開發(fā)種新語言O(shè)ak (Java的前身)。Oak是種用于網(wǎng)絡(luò)的精 巧而安全的語言,Sun公司曾以此投標(biāo)一個交互式電
2、視項(xiàng)目,但結(jié)果被SGI打敗。于 是Oak幾乎無家可歸,恰巧這時Mark Ardreesen開發(fā)的Mosaic和Netscape啟發(fā)了 Oak 項(xiàng)目組成員,他們用Java編制了 Hotjava瀏覽器,得到了 Sun公司首席執(zhí)行官Scott McNealy的支持,觸發(fā)Java進(jìn)軍Internet。Java技術(shù)是由美國Sun公司倡導(dǎo)和推出的,它包括Java語言和Java Media APIS、 Security APIs、 Management APIs、 Java Applet> Java RMI> JavaBean> JavaOS、 Java Servlet> JavaS
3、erver Page以及JDBC等?,F(xiàn)把Java技術(shù)的發(fā)展歷程簡述如下: 1990年,Sun公司James Gosling領(lǐng)導(dǎo)的小組設(shè)計(jì)/ 種平臺獨(dú)立的語言O(shè)ak, 主要用于為各種家用電器編寫程序。 1995 年 1 月,Oak 被改名為 Java; 1995 年 5 月 23 日,Sun 公司在 Sun World 495 上正式發(fā)布Java和Hotjava瀏覽器。 1995 年 8 月至 12 月,Netscape 公司、Oracle 公司、Borland 公司、SGI 公司、 Adobe公司、IBM公司、AT&T公司、Intel公司獲得Java許可證。 1996年1月,Sun公司
4、宣布成立新的業(yè)務(wù)部門JavaSoft部,以開發(fā)、銷售 并支持基于Java技術(shù)的產(chǎn)品,由Alan Baratz任總裁。同時推出Java開發(fā)工具 包JDK (Java Development Kit),為開發(fā)人員提供用來編制Java應(yīng)用軟件 所需的工具。 1996 年 2 月,Sun 公司發(fā)布 Java 芯片系列,包括 PicoJava、MicroJava 和 Ultrajava» 并推出 Java 數(shù)據(jù)庫連接 JDBC (Java Database Connectivity)。 1996 年 3 月,Sun 公司推出 Java Workshopo 1996年4月,Microsoft公司
5、、SCO公司、蘋果電腦公司(Apple)、NEC公司 等獲得Java許可證。Sun公司宣布允許蘋果電腦、HP、日立、IBX、Microsoft、 Novell、SGI、SCO、Tamdem等公司將Java平臺嵌入到其操作系統(tǒng)中。, 1996年5月,HP公司、Sybase公司獲得Java許可證。北方電訊公司宣布把Java 技術(shù)和Java微處理潴應(yīng)用到其下代電話機(jī)中的計(jì)劃。5月29日,Sun公司在 舊金山舉行第一屆JavaOne世界Java開發(fā)者大會,業(yè)界人士踴躍參加。Sun公 司在大會上推出系列Java平臺新技術(shù)。 1996年8月,JavaWorkShop成為Sun公司通過互聯(lián)網(wǎng)提供的第個產(chǎn)品。
6、 1996年9月,Addison-Wesley和Sun公司推出Java虛擬機(jī)規(guī)范和Java類庫。, 1996年10月,德州儀錯等公司獲得Java許可證。Sun公司提前完成JavaBean 規(guī)范并發(fā)布,同時發(fā)布第一個Java JIT (Just-In-Time)編譯券,并打算在Java Workshop和Solaris操作系統(tǒng)中加入JIT0 10月29日,Sun公司發(fā)布Java企業(yè) 計(jì)算技術(shù),包括JavaStation網(wǎng)絡(luò)計(jì)算機(jī)、65家公司發(fā)布的85個Java產(chǎn)品及應(yīng) 用、7個新的Java培訓(xùn)課程及Java咨詢服務(wù)、基于Java的Solstice互聯(lián)網(wǎng)郵件 軟件、新的 Java 開發(fā)者支持服務(wù)、
7、Hotjava Views 演示、Java Tutor. Java Card API 等。Sun公司宣布完成Java Card API規(guī)范,這是智能卡使用的第個開放API。 Java Card規(guī)范將把Java能力賦予全世界億萬張智能卡。 1996年11月,IBM公司獲得JavaOS和Hotjava許可證。Novell公司獲得Java Workshop許可證。Sun公司和IBM公司宣布雙方就提供Java化的商業(yè)解決方 案達(dá)成項(xiàng)廣泛協(xié)議,IBM公司同意建立第個Java檢驗(yàn)中心。 1996年12月,Xerox等公司獲得Java或JavaOS許可證。Sun公司發(fā)布、 Java商貿(mào)工具包、JavaBea
8、n開發(fā)包及,系列Java APIs:推出個新的JavaServer 產(chǎn)品系列,其中包括 Java Web Servers Java NC Server 和 JavaServer Toolkito Sun 公司發(fā)布100%純Java計(jì)劃,得到百家公司的支持。 1997年1月,SAS等公司獲得Java許可證° Sun公司交付完善的JavaBean開 發(fā)包,這是在確定其規(guī)范后不到8個月內(nèi)完成的。 1997年2月,Sun公司和ARM公司宣布同意使JavaOS運(yùn)行在ARM公司的 RISC處理然架構(gòu)上。Informix公司宣布在其Universal Server和其他數(shù)據(jù)庫產(chǎn) 品上支持 Nets
9、cape公司宣布其Netscape Communicator支持所有Java化的應(yīng)用軟件和核心APIo 1997年3月,HP公司獲得Java Workshop許可證,用于其HP-UX操作系統(tǒng)。西門子、AG公司等獲得Java許可證。日立半導(dǎo)體公司、Informix公司等獲得 JavaOS許可證。Novell公司獲得Java Studio許可證。Sun公司發(fā)售的JavaOS 操作系統(tǒng),這是一種在微處理得上運(yùn)行Java環(huán)境的最小、最快的方法,可提供 給JavaOS許可證持有者使用。Sun公司發(fā)售Hotjava Browser ,這是種Java 瀏覽器,可以方便地按需編制專用的信息應(yīng)用軟件,如客戶自助
10、臺和打上公司 牌號的網(wǎng)絡(luò)應(yīng)用軟件。 1996年6月,Sun公司發(fā)布,同時推出 和Java Web Server。 1999年11月,Sun公司發(fā)布,同時推出 和Java Servlet o 2000 年 9 月,Sun 公司發(fā)布 和 Java Servlet APIOJava的現(xiàn)狀Java是Sun公司推出的新一代面向?qū)ο蟪绦蛟O(shè)計(jì)語言,特別適于Internet應(yīng)用 程序開發(fā),它的平臺無關(guān)性直接威脅到Wintel的壟斷地位,這衣現(xiàn)在以下幾個方面: 計(jì)算機(jī)產(chǎn)業(yè)的許多大公司購買了 Java許可證,包括IBM、AppleDEC、Adobe.SiliconGraphics HP、Oracle> TO
11、SHIBA 以及 Microsofto 這點(diǎn)說明,Java 已 得到了業(yè)界的認(rèn)可。,眾多的軟件開發(fā)商開始支持Java軟件產(chǎn)品。例如Inprise公司的JBuilder、Sun 公司自己做的Java開發(fā)環(huán)境JDK與JRE。Sysbase公司和Oracle公司均已支持 HTML 和 Java。 Intranet正在成為企業(yè)信息系統(tǒng)最佳的解決方案,而其中Java將發(fā)揮不可替代 的作用。Intranet的目的是將Internet用于企業(yè)內(nèi)部的信息類型,它的優(yōu)點(diǎn)是便 宜、易于使用和管理。用戶不管使用何種類型的機(jī)得和操作系統(tǒng),界面是統(tǒng)-的Internet瀏覽器,而數(shù)據(jù)庫、Web頁面、AppletServl
12、et、JSP則存儲在Web 服務(wù)器上,無論是開發(fā)人員還是管理人員,或是用戶都可以受益于該解決方案。第3頁的特點(diǎn)Java語言的優(yōu)點(diǎn)Java語言是種優(yōu)秀的編程語言。它最大的優(yōu)點(diǎn)就是與平臺無關(guān),在Windows 9x、Windows NT、Solaris. Linux、MacOS以及其它平臺上,都可以使用相同的代 碼?!耙淮尉帉?,到處運(yùn)行”的特點(diǎn),使其在互聯(lián)網(wǎng)上被廣泛采用。由于Java語言的設(shè)計(jì)者們十分熟悉C+語言,所以在設(shè)計(jì)時很好地借鑒了 C+ 語言??梢哉f,Java語言是種比C+語言”還面向?qū)ο蟆钡姆N編程語言。Java 語言的語法結(jié)構(gòu)與C+語言的語法結(jié)構(gòu)十分相似,這使得C+程序員學(xué)習(xí)Java語言
13、 更加容易。當(dāng)然,如果僅僅是對C+改頭換面,那么就不會有今天的Java熱了。Java語言 提供的一些有用的新特性,使得使用Java語言比C+語言更容易寫出“無錯代碼”。這些新特性包括:1、提供了對內(nèi)存的自動管理,程序員無需在程序中進(jìn)行分配、釋放內(nèi)存,那些可怕 的內(nèi)存分配錯誤不會再打擾設(shè)計(jì)者了:2、去除了 C+語言中的令人費(fèi)解、容易出錯的“指針”,用其它方法來進(jìn)行彌補(bǔ);3、避免了賦值語句(如a = 3)與邏輯運(yùn)算語句(如a = = 3)的混清;4、取消了多重繼承這復(fù)雜的概念。Java語言的規(guī)范是公開的,可以在 上找到它,閱讀Java語言的規(guī)范是提高技術(shù)水平的好方法。語言的關(guān)鍵特性Java語言有許
14、多有效的特性,吸引者程序員們,最主要的有以下幾個:第5頁1 .簡潔有效Java語言是種相當(dāng)簡潔的“面向?qū)ο蟆背绦蛟O(shè)計(jì)語言。Java語言省略j C+語 言中所有的難以理解、容易混清的特性,例如頭文件、指針、結(jié)構(gòu)、單元、運(yùn)算符重 轂、虛擬基礎(chǔ)類等。它更加嚴(yán)謹(jǐn)、簡潔。2 .可移植性對于個程序員而言,寫出來的程序如果不需修改就能夠同時在Windows、 MacOS、UNIX等平臺上運(yùn)行,簡直就是美夢成真的好事!而Java語言就讓這個原本 遙不可及的事已經(jīng)越來越近/°使用Java語言編寫的程序,只要做較少的修改,甚至 有時根本不需修改就可以在不同平臺上運(yùn)行了。3 .而向?qū)ο罂梢赃@么說,“面向?qū)?/p>
15、象”是軟件匚程學(xué)的次革命,大大提升了人類的軟件開 發(fā)能力,是一個偉大的進(jìn)步,是軟件發(fā)展的個重大的里程碑。在過去的30年間,“面向?qū)ο蟆庇辛碎L足的發(fā)展,充分體現(xiàn)了其自身的價值,到 現(xiàn)在已經(jīng)形成了 個包含了 “面向?qū)ο蟮南到y(tǒng)分析”、“面向?qū)ο蟮南到y(tǒng)設(shè)計(jì)”、“面向 對象的程序設(shè)計(jì)”的完整體系。所以作為種現(xiàn)代編程語言,是不能夠偏離這方向 的,Java語言也不例外。4 .解釋型Java語言是種解釋型語言,相對"于C/C+語言來說,用Java語言寫出來的程序 效率低,執(zhí)行速度慢。但它正是通過在不同平臺上運(yùn)行Java解釋錯,對Java代碼進(jìn) 行解釋,來實(shí)現(xiàn)“ 一次編寫,到處運(yùn)行”的宏偉目標(biāo)的。為了
16、達(dá)到目標(biāo),犧牲效率還 是值得的,況且,現(xiàn)在的計(jì)算機(jī)技術(shù)日新月異,運(yùn)算速度也越來越快,用戶是不會感 到太慢的。5 .適合分布式計(jì)算Java語言具有強(qiáng)大的、易于使用的聯(lián)網(wǎng)能力,非常適合開發(fā)分布式計(jì)算的程序。 Java應(yīng)用程序可以像訪問本地文件系統(tǒng)那樣通過URL訪問遠(yuǎn)程對象。使用Java語言編寫Socket通信程序十分簡單,使用它比使用任何其它語言都簡單。而且它還十分適用于公共網(wǎng)關(guān)接口(CGI)腳本的開發(fā),另外還可以使用Java小應(yīng)用程序(Applet) x Java服務(wù)器頁面(Java Server Page,簡稱JSP) Servlet等等手段 來構(gòu)建更豐富的網(wǎng)頁。6 .擁有較好的性能正如前而所
17、述,由于Java是種解釋型語言,所以它的執(zhí)行效率相對就會慢些, 但由于Java語言采用了兩種手段,使得其性能還是不錯的。A、Java語言源程序編寫完成后,先使用Java偽編譯器進(jìn)行偽編譯,將其轉(zhuǎn)換為中間 碼(也稱為字節(jié)碼),再解釋:B、提供了 種“準(zhǔn)實(shí)時” (Just-in-Time, JIT)編譯器,當(dāng)需要更快的速度時,可以 使用JIT編譯券將字節(jié)碼轉(zhuǎn)換成機(jī)器碼,然后將其緩沖下來,這樣速度就會更快。7 .健壯、防患于未然Java語言在偽編譯時,做了許多早期潛在問題的檢查,并且在運(yùn)行時又做了 些 相應(yīng)的檢查,可以說是種最嚴(yán)格的“編譯器”。它的這種“防患于未然”的手段將許多程序中的錯誤扼殺在搖藍(lán)
18、之中。經(jīng)常有許多在其它語言中必須通過運(yùn)行才會暴露出來的錯誤,在編譯階段就被發(fā)現(xiàn)了。另外,在Java語言中還具備了許多保證程序穩(wěn)定、健壯的特性,有效地減少了錯 誤,這樣使得Java應(yīng)用程序更加健壯。8 .具有多線程處理能力線程,是種輕量級進(jìn)程,是現(xiàn)代程序設(shè)計(jì)中必不可少的種特性。多線程處理能力使得程序能夠具有更好的交互性、實(shí)時性。Java在多線程處理方面性能超群,具有讓設(shè)計(jì)者驚喜的強(qiáng)大功能,而且在Java語 言中進(jìn)行多線程處理很簡單。9 .具有較高的安全性由于Java語言在設(shè)計(jì)時,在安全性方面考慮很仔細(xì),做了許多探究,使得Java語言成為目前最安全的一種程序設(shè)計(jì)語言。盡管Sun公司曾經(jīng)許諾過:“通
19、過Java可以輕松構(gòu)建出防病毒、防黑客的系統(tǒng)”,但“世界上沒有絕對的安全”這真理是不會因?yàn)槟橙说脑S諾而失靈驗(yàn)的。就在JDK (Java Development Kit)發(fā)布不久后,美國Princeton (普林斯頓)大 學(xué)的組安全專家發(fā)現(xiàn)了 Java安全特性中的第例錯誤。從此,Java安全方面的 問題開始被關(guān)注。不過至今所發(fā)現(xiàn)的安全隱患都很微不足道,而且Java開發(fā)組還宣稱, 他們對系統(tǒng)安全方面的Bugs非常重視,會對這些被發(fā)現(xiàn)的Bugs立即進(jìn)行修復(fù)。而且由于Sun公司開放了 Java解釋器的細(xì)節(jié),所以有助于通過各界力量,共同發(fā) 現(xiàn)、防范、制止這些安全隱患。10 .是種動態(tài)語言Java是種動態(tài)
20、的語言,這我現(xiàn)在以下兩個方面:A、在Java語言中,可以簡單、直觀地查詢運(yùn)行時的信息:B、可以將新代碼加入到個正在運(yùn)行的程序中去。11 .是一種中性結(jié)構(gòu)“Java編譯器生成的是種中性的對象文件格式?!币簿褪钦f,Java編譯器通過 偽編譯后,將生成個與任何計(jì)算機(jī)體系統(tǒng)無關(guān)的“中性”的字節(jié)碼。這種中性結(jié)構(gòu)其實(shí)并不是Java首創(chuàng)的,在Java出現(xiàn)之前UCSD Pascal系統(tǒng)就已 在種商業(yè)產(chǎn)品中做到了這點(diǎn),另外在UCSD Pascal之前也有這種方式的先例,在 Niklaus Wirth實(shí)現(xiàn)的Pascal語言中就采用了這種降低些性能,換取更好的可移植性 和通用性的方法。Java的這種字節(jié)碼經(jīng)過了許多
21、精心的設(shè)計(jì),使得其能夠很好地兼容于當(dāng)今大多數(shù) 流行的計(jì)算機(jī)系統(tǒng),在任何機(jī)器上都易于解釋,易于動態(tài)翻譯成為機(jī)賽代碼。Java虛擬機(jī)(JVM)Java虛擬機(jī)(JVM)是可運(yùn)行Java代碼的假想計(jì)算機(jī)。只要根據(jù)JVM規(guī)范描述將解 釋器移植到特定的計(jì)算機(jī)上,就能保證經(jīng)過編譯的任何Java代碼能夠在該系統(tǒng)上運(yùn) 行。如圖1-1所示:javac. exejava, exeJav源擬機(jī)(JO)圖1-1 Java虛擬機(jī)從圖1-1中不難明白JAVA可以實(shí)現(xiàn)可移植性的原因,只要在操作系統(tǒng)上(WINNT、 Linux. Unix)植入JVM (Java虛擬機(jī)),JAVA程序就具有可移植性,也符合SUN公 司提出的口號
22、uWrite Once, Run Anywhere"( ” 次編寫,處處運(yùn)行”)。目前,Java技術(shù)的架構(gòu)包括以下三個方面:J2EE (Java 2 Platform Enterprise Edition)企業(yè)版,是以企業(yè)為環(huán)境而開發(fā)應(yīng)用 程序的解決方案。J2SE (Java 2 Platform Stand Edition)標(biāo)準(zhǔn)版,是桌面開發(fā)和低端商務(wù)應(yīng)用的解 決方案。J2ME (Java 2 Platform Micro Edition)小型版,是致力于消費(fèi)產(chǎn)品和嵌入式設(shè) 備的最佳解決方案。JDK的安裝及環(huán)境變量的配置要開發(fā)Java程序首先必須要配置好環(huán)境變量,而Java的運(yùn)行環(huán)
23、境的配置比較麻 煩,相信有些讀者也會有這種體會,下面來看下JDK的安裝過程。在這里JDK選 用的是版本。安裝分為兩個步驟:1、首先要準(zhǔn)備好 JDK 的安裝文件:j2sdk-l_4_0_03-windows-i586 ;2、配置環(huán)境變量path。先來看下步驟的安裝過程:臉Sunfnicroitems)avaim2 PlatformSTANDARD EDITIONVersion 1.4Tn、卜cllSl gj Wizcwd F J wo Oevloprnert K2 Sdup is piepcrrg the InstdEhHd? V/iz-ard, ssfiich nil guide tfroui
24、i ths 2就叫 由s ?9iup froces5. Pte ate wal圖1-2啟動JDK安裝程序圖1-3將安裝路徑設(shè)置為c:j2sdk之后走默認(rèn)的安裝設(shè)置即可。從圖可以看出,在編譯Java程序時需要用到Javac這個命令,執(zhí)行Java程序 需要java這個命令,而這兩個命令并不是windows自帶的命令,所以使用它們的時候 需要配置好環(huán)境變量,這樣就可以在任何的目錄下使用這兩個命令了。那么該如何設(shè)置環(huán)境變量呢在我的電腦上點(diǎn)擊右鍵一一選擇屬性一一選擇高級一一環(huán)境變量一一patho圖1-4系統(tǒng)環(huán)境變量的配置在 path 后面加上 c:j2sdkbin;c:j2sdk是安裝JDK的路徑,如果
25、記不清楚了,可回去看下圖1-3。注意:在這里使用的是windows 2000操作系統(tǒng),至于其他的操作系統(tǒng),如windows98 在設(shè)置環(huán)境變量的時與windows2000的配置有許多不同,如果讀者感興趣,可以去查 閱其他的資料。系統(tǒng)會性常規(guī)I網(wǎng)絡(luò)標(biāo)識1硬件I用戶配置文件高級圖1-5添加環(huán)境變量這樣就可以在任何目錄下使用javac和java這兩個命令了。編寫第一個Java程序說了這么多,現(xiàn)在就自己來動手編寫個Java的程序來親自感受一下Java語言 的基本形式。需要說明的是,JAVA程序分為兩種形式:種是網(wǎng)頁上使用的Applet 程序(Java小程序),另種是Appliction程序(即:Jav
26、a應(yīng)用程序),本書主要講解 的是 Java Application 程序。第13頁范例:01 public class Hello02 03回 C WINNTsystem32 cmd .exeD:X>set classpath=c:D:>java Hello Hello World?本章摘要:1> Java程序比較特殊,它必須先經(jīng)過編譯,然后再利用解釋的方式來運(yùn)行。2、Byte-codes最大的好處是一一可越平臺運(yùn)行,可讓“次編寫,處處運(yùn)行”成為 可能。3、使用classpath可以指定class的運(yùn)行路徑。第2章簡單的Java程序從本章開始,就要正式學(xué)習(xí)Java語言的程序設(shè)
27、計(jì),除了認(rèn)識程序的架構(gòu)外,本章 還介紹了修飾符、關(guān)鍵字以及些基本的數(shù)據(jù)類型。通過簡單的范例,讓讀者了解到 檢測與提高程序可讀性的方法,以培養(yǎng)讀者正確的程序編寫觀念與習(xí)慣C一個簡單的例子首先來看個簡單的Java程序°在介紹程序的內(nèi)容之前,先簡單回顧下第章 講解的例子,之后再來看下面這個程序,試試看是否看得出它是在做哪些事情! 范例:01 ava的文件便無法命名。圖2-1如果將類聲明成public,則也要將文件名稱取成和這個類樣的名稱3、第4行public static void main (String args )為程序運(yùn)行的起點(diǎn)。第4ro行的功能 類似于般程序語言中的函數(shù)(func
28、tion),但在Java中稱之為method (方法)。因此C語言里的main。函數(shù)(主函數(shù)),在Java中則被稱為mainO method (主方法)。4、mainO methoc的主體(body)從第5彳.的左大括號到第11行的右人括號“Testjava21. javachss TestClass 第 $第19頁為止。每個獨(dú)立的Java程序一定要有mainO method才能運(yùn)行,因?yàn)樗浅绦?開始運(yùn)行的起點(diǎn)。5、第6行“int num;"的目的是聲明num為個整數(shù)類型的變量。在使用變量之前 必須先聲明其類型。6、第7行“num=3;"為賦值語句,即把整數(shù)2賦給存放整數(shù)
29、的變量num。7、第8行的語句為:”這是數(shù)字"+num);程序運(yùn)行時會在顯示器上輸出引號(” ”)內(nèi)所包含的內(nèi)容。包括“這是數(shù)字” 和整數(shù)變量num所存放的值兩部分內(nèi)容。8、 是指標(biāo)準(zhǔn)輸出,通常與計(jì)算機(jī)的接口設(shè)備有關(guān),如打印機(jī)、顯示潴等。其后所續(xù)的文字printin,是由print與line所組成的,意思是將后面括號中的內(nèi)容 打印在標(biāo)準(zhǔn)輸出設(shè)備一一顯示器上。因此第8行的語句執(zhí)行完后會換行,也就是 把光標(biāo)移到下一行的開頭繼續(xù)輸出。讀者可以把,改成,看一下?lián)Q行與不換行的區(qū)別。9、第10行的右大括號則告訴編譯器main。method到這兒結(jié)束。10、第11行的右大括號則告訴編譯器class
30、 Testjava2_l到這兒結(jié)束。這里只是簡單的介紹了 下Testjava2_l這個程序,相信讀者已經(jīng)對Java語 言有了初步的解。Testjava2_l程序雖然很短,卻是個相當(dāng)完整的Java程序! 在后面的章節(jié)中,將會對Java語言的細(xì)節(jié)部分,做詳細(xì)的討論。簡單的Java程序解析本節(jié)將仔細(xì)探討Java語言的些基本規(guī)則及用法。類(class)Java程序是由類(class)所組成,至于類的概念在以后會有詳細(xì)講解,讀者只要 先記住所有的Java程序都是由類組成的就可以下面的程序片段即為定義類的典型 范例:public class Testelse及switch語句,語句中加上了選擇結(jié)構(gòu)之后,就
31、像是十字路口,根據(jù)不同的選擇,程序的運(yùn)行會有不同的結(jié)果?,F(xiàn)在先來看看if語句。if語句的格式如下所示:格式3-3 if語句的格式】if (判斷條件)語句1 :語句2 :若是在if語句主體中要處理的語句只有1個,可省略左、右人括號。當(dāng)判斷條件 的值不為假時,就會逐執(zhí)行人括號里面所包含的語句,if語句的流程圖如圖3-10所 示。圖3-10 if語句的流程圖選擇結(jié)構(gòu)中除了 if語句之外,還有ifelse語句。在if語句中如果判斷條件成立, 即可執(zhí)行語句主體內(nèi)的語句,但若要在判斷條件不成立時可以執(zhí)行其他的語句,使用if-else語句就可以節(jié)省判斷的時間。第#頁else 語句當(dāng)程序中存在含有分支的判斷語
32、句時,就可以用if.else語句處理。當(dāng)判斷條件成 立,即執(zhí)行if語句主體;判斷條件不成立時,則會執(zhí)行else后面的語句主體。if-else 語句的格式如下: 格式3-4 if-else語句的格式if (判斷條件)(語句主體1 :else(語句主體2:若是在if語句或else語句主體中要處理的語句只有個,可以將左、右人括號去 。if-else語句的流程圖如圖3-17所示。第77頁下而舉個簡單的例人聲明個整型變量a,并給其賦初值5,在程序中判斷a 是奇數(shù)還是偶數(shù),再將判斷的結(jié)果輸出。范例:01 . else的使用方法02 public class Testjava3_2403 04public
33、static void main(String args)05(06int a = 5 ;0708if(a%2 = = 1)09"是奇數(shù)!”);10 else11 是偶數(shù)!”);12 )13 )輸出結(jié)果:5是奇數(shù)!程序說明:1、第行為if. else語句。在第8行中,if的判斷條件為a%2 = = 1,當(dāng)a除以2 取余數(shù),若得到的結(jié)果為1,表示a為奇數(shù),若a除以2取余數(shù)得到的結(jié)果為0, 則a為偶數(shù)。2、當(dāng)a除以2取余數(shù)的結(jié)果為1時,即執(zhí)行第9行的語句,輸出“a為奇數(shù)! ”:否則執(zhí)行第11行,輸出“a為偶數(shù)!”。3、讀者可以自行將變量a的初值更改,再重復(fù)執(zhí)行程序。從上面的程序中發(fā)現(xiàn),程
34、序的縮進(jìn)在這種選擇結(jié)構(gòu)中起著非常重要的作用,它可 以使設(shè)計(jì)者編寫的程序結(jié)構(gòu)層次清晰,在維護(hù)上也就比較簡單。所以本書建議讀者以 后在編寫程序時要養(yǎng)成縮進(jìn)的好習(xí)慣。第#頁條件運(yùn)算符還有種運(yùn)算符可以代替ifelse語句,即條件運(yùn)算符,如表3-17所示:表3-17條件運(yùn)算符條件運(yùn)算符意義:根據(jù)條件的成立與否,來決定結(jié)果為“:”前或”后的友前式使用條件運(yùn)算符時,操作數(shù)仃3個,其格式如下:格式3-5 ifelse語句的格式】條件判斷表達(dá)式1:表達(dá)式2將上面的格式以if語句解釋,就是當(dāng)條件成立時執(zhí)行表達(dá)式1.否則執(zhí)行表達(dá)式2,|通常會將這兩個表達(dá)式之的運(yùn)算結(jié)果指定給某個變量,也就相當(dāng)于下面的一if. els
35、e 語句:格式3-6 :與if-else語句的相對關(guān)系】if (條件判斷)變量X =表達(dá)式1 : else變量x二衣達(dá)式2 :接下來,可以試著練習(xí)用條件運(yùn)算符來編寫程序,在下面的程序中聲明變量a、b, 并為其賦初值,再利用條件運(yùn)算符判斷其最大值。范例:01 else語句,所以條件運(yùn)算符的執(zhí)行速度也較高。if. . else 語句如果需要在if. else里判斷多個條件時,就需要if. else ifelse語句了,其格式如T:so0:O- 0Oc06 07 08 0910111213141516格式3-7 ifelse ifelse語句】 if (條件判斷1)(語句主體1 :else if (
36、條件判斷2)(語句主體2 :else if . else 的使用public class Testjava3_26 (public static void main(String args)int x = 1 ;if(x= =1)x = = 1 );else if(x= =2)= = 2*);else if(x= =3)= = 3"); else= 3);第SI頁17 輸出結(jié)果:x=l可以看出if else if . else比單純的if. else語句可以含有更多的條件判斷語句, 可是讀者想想如果有很多條件都要判斷的話,這樣寫會不會是件很頭疼的事情, 下面將為讀者介紹的多重選擇語句
37、就可以為讀者解決這件頭瘩的問題。多重選擇語句switch語句switch語句可以將多選的情況簡化,而使程序簡潔易懂,在本節(jié)中,將要介紹 如何使用switch語句以及它的好伙伴break語句:此外,也要討論在switch語句中如果不使用break語句會出現(xiàn)的問題。首先,先來了解switch語句該如何使用。要在許多的選擇條件中找到并執(zhí)行其中個符合判斷條件的語句時,除可以使用if., else不斷地判斷之外,也可以使用另種更方便的方式即多重選擇一一switch語 句。使用嵌套if., else語句最常發(fā)生的狀況,就是容易將if與else配對混淆而造成閱讀 及運(yùn)行上的錯誤。使用swtich語句則可以避
38、免這種錯誤的發(fā)生。switch語句的格式如下:(格式3-8 switch語句】switch (表達(dá)式)case選擇值1 :語句主體1 ;break :case選擇值2 :語句主體2 ;break :case選擇值n :語句主體n :break ;default:語句主體;要特別注意的是,在switch語句里的選擇值只能是字符或是常量a接下來看看 switch語句執(zhí)行的流程。1、switch語句先計(jì)算括號中表達(dá)式的結(jié)果。2、根據(jù)表達(dá)式的值檢測是否符合執(zhí)行case后面的選擇值,若是所有case的選擇值皆 不符合,則執(zhí)行default所包含的語句,執(zhí)行完畢即離開switch語句。3、如果某個case
39、的選擇值符合式達(dá)式的結(jié)果,就會執(zhí)行該case所包含的語句,直 遇到break語句后才離開switch語句。4、若是沒有在case語句結(jié)尾處加上break語句,則會直執(zhí)行到switch語句的尾端 才會離開switch語句。break語句在下面的章節(jié)中會介紹到,讀者只要先記住break 是跳出語句就可以了。5若是沒有定義default該執(zhí)行的語句,則什么也不會執(zhí)行,直接離開switch語句。根據(jù)上面的描述,可以繪制出如圖3-18所示的switch語句流程圖:圖3-18 switch語句的基本流程第83頁下面的程序是個簡單的賦值式達(dá)式,利用switch語句處理此衣達(dá)式中的運(yùn)算符, 再輸出運(yùn)算后的結(jié)果
40、。范例:01 . + 10 = "+sum);.+ 10 = 55程序說明:1、在第6行中,將循環(huán)控制變量i的值賦值為1。2、第8行進(jìn)入while循環(huán)的判斷條件為i<=10,第次進(jìn)入循環(huán)時,由于i的值為1, 所以判斷條件的值為真,即進(jìn)入循環(huán)主體。3、第9'12行為循環(huán)主體,sum+i后再指定給sum存放,i的值加1,再回到循環(huán)起 始處,繼續(xù)判斷i的值是否仍在所限定的范圍內(nèi),直到i大于10即跳出循環(huán),衣 示累加的操作已經(jīng)完成,最后再將sum的值輸出即可。,while 循環(huán)dowhile循環(huán)也是用于未知循環(huán)執(zhí)行次數(shù)的時候,而while循環(huán)及dowhile循 環(huán)最大不同就是進(jìn)
41、入while循環(huán)前,while語句會先測試判斷條件的真假,再決定是否 執(zhí)行循環(huán)主體,而do-while循環(huán)則是“先做再說”,每次都是先執(zhí)行一次循環(huán)主體, 然后再測試判斷條件的真假,所以無論循環(huán)成立的條件是什么,使用do-while循環(huán) 時,至少都會執(zhí)行次循環(huán)主體。do-while循環(huán)的格式如下:第87頁(格式3-10 dowhile循環(huán)語句】Do(語句1 :語句2 : 語句n ;while (判斷條件);當(dāng)循環(huán)主體只有個語句時,可以將左、右大括號去除。第次進(jìn)入do., while循 環(huán)語句時,不管判斷條件(它可以是任何表達(dá)式)是否符合執(zhí)行循環(huán)的條件,都會直 接執(zhí)行循環(huán)主體。循環(huán)主體執(zhí)行完畢,才
42、開始測試判斷條件的值,如果判斷條件的值 為真,則再次執(zhí)行循環(huán)主體,如此重復(fù)測試判斷條件、執(zhí)行循環(huán)主體,直到判斷條件 的值為假,才會跳離do-while循環(huán)。下而列出了 do-while循環(huán)執(zhí)行的流程:1 .進(jìn)入do. whle循環(huán)前,要先為循環(huán)控制變量(或表達(dá)式)賦起始值。2 .直接執(zhí)行循環(huán)主體,循環(huán)主體執(zhí)行完畢,才開始根據(jù)判斷條件的內(nèi)容決定是否繼 續(xù)執(zhí)行循環(huán):條件判斷值為真(True)時,繼續(xù)執(zhí)行循環(huán)主體;條件判斷值為假(False)時,則跳出循環(huán),執(zhí)行其他語句。3 .執(zhí)行完循環(huán)主體內(nèi)的語句后,重新為循環(huán)控制變量(或衣達(dá)式)賦值(增加或減 少),由于do-while循環(huán)和while循環(huán)樣,不
43、會自動更改循環(huán)控制變量(或衣 達(dá)式)的內(nèi)容,所以在do-while循環(huán)中賦值循環(huán)控制變量的工作要由自己來做, 再回到步驟2重新判斷是否繼續(xù)執(zhí)行循環(huán)。根據(jù)上述的描述,可以繪制出如圖3-20所示的do., while循環(huán)流程圖:第89頁循環(huán)初值把(1+2+10)的程序稍加修改,用do-while循環(huán)設(shè)計(jì),個能累加至n的程序,并且能夠限制n的范圍(n要大于0),就是下面的范例范例:01 .while循環(huán)的使用02 public class Testjava3_2903 04public static void main(String args)05(06int i = 1 , sum = 0 ;10
44、 = +sum);.+ 10 = 55首先,聲明程序中要使用的變量(循環(huán)記數(shù)及累加操作數(shù))及sum (累加的總和), 并將sum設(shè)初值為0:由于要計(jì)算1+2+10,因此在第次進(jìn)入循環(huán)的時候,將i 的值設(shè)為1,接著判斷i是否小于等于10,如果i小于等于10,則計(jì)算sum+i的值后 再指定給sum存放。i的值已經(jīng)不滿足循環(huán)條件時,i即會跳出循環(huán),表示累加的操作 已經(jīng)完成,再輸出sum的值,程序即結(jié)束運(yùn)行。程序說明:1、第0812行利用do-while循環(huán)計(jì)算riO的數(shù)累加2、第13行,輸出1"10的數(shù)的累加結(jié)果:1 + 2 + .+ 10 = 551do.while循環(huán)不管條件是什么,都
45、是先做再說,因此循環(huán)的主體最少會被執(zhí)行 次。在日常生活中,如果能夠多加注意,并不難找到do-while循環(huán)的影戶!舉例來 說,在利用提款機(jī)提款前,會先進(jìn)入輸入密碼的畫面,讓使用者輸入三次密碼,如果 皆輸入錯誤,即會將銀行卡吞掉,其程序的流程就是利用do-while循環(huán)設(shè)計(jì)而成的。循環(huán)當(dāng)很明確地知道循環(huán)耍執(zhí)行的次數(shù)時,就可以使用for循環(huán),其語句格式如下:第90頁格式3-11 for循環(huán)語句】for (賦值初值;判斷條件;賦值增減量) (語句1 : 語句n :若是在循環(huán)主體中要處理的語句只有1個,可以將人括號去除。下面列出了 for 循環(huán)的流程。1、第一次進(jìn)入for循環(huán)時.為循環(huán)控制變量賦起始值
46、。2、根據(jù)判斷條件的內(nèi)容檢查是否要繼續(xù)執(zhí)行循環(huán),當(dāng)判斷條件值為真(true) 時,繼續(xù)執(zhí)行循環(huán)主體內(nèi)的語句:判斷條件值為假(false)時,則會跳出循 環(huán),執(zhí)行其他語句。3、執(zhí)行完循環(huán)主體內(nèi)的語句后,循環(huán)控制變量會根據(jù)增減量的耍求,更改循環(huán) 控制變量的值,再回到步驟2重新判斷是否繼續(xù)執(zhí)行循環(huán)。根據(jù)上述描述,可以繪制出如圖3-21所示的for循環(huán)流程圖。圖3-21 for循環(huán)的基本流程范例TestJava3_30可以使讀者熟悉for循環(huán)的使用,它是利用for循環(huán)來完成由 1至10的數(shù)的累加運(yùn)算。范例:01. + 10 = +sum);0203 040506070809101112第91頁輸出結(jié)果
47、:1 + 2 + . + 10 = 55程序說明:1、在第06行聲明兩個變量sum和i, I用于循環(huán)的記數(shù)控制。2、0809行,做110之間的循環(huán)累加,執(zhí)行的結(jié)果如Testjava3_28,如果讀者不明 白的話,可以和Testjava3_28的程序說明比較下,相信就可以明白for的用法 了。循環(huán)嵌套當(dāng)循環(huán)語句中又出現(xiàn)循環(huán)語句時,就稱為嵌套循環(huán)。如嵌套for循環(huán)、嵌套while 循環(huán)等,當(dāng)然讀者也可以使用混合嵌套循環(huán),也就是循環(huán)中又有其他不同種類的循環(huán)。 以打印九九乘法表為例,練習(xí)嵌套循環(huán)的用法。范例:01020304050607080910111213140102030405將程序Testja
48、va3_32中的break語句改成continue語句就形成了程序O讀者可以觀察下這兩種跳離語句的不同。break語句是跳離當(dāng)前層循環(huán),而continue語句是回到循環(huán)的起點(diǎn)。程序如下所示:范例:C70607080910111213141516ength”完成,如下面的格式:格式4-3數(shù)組長度的取得】數(shù)組名.length數(shù)蛆里元素的個數(shù)也就是i數(shù)組名廠名稱后(fpubli七港胡I畿殖離個元素若辛要取電TetJa-y 肉所惠明取數(shù)軍a&的石素個數(shù),只要在數(shù)組apg th;'邛可如下面的程序片段:e cor吐9數(shù)組第10個元索麗c5翹圾。輻 main(String 口 args)i
49、nt a ic?V32, 45,65,32721雪?工£尚考指組 一實(shí)體的地址,所以score的內(nèi)容耒知”數(shù)組排序前的順序:");for (int i=0;i;i+)分配3個整型的內(nèi)存空間數(shù)組里元素的個數(shù)5 6IX IX內(nèi)舒里把賦變0X10080X1000每一格代表一個元素:每個元素皆為:int類型ength"來獲取,其語法如下:第113頁格式4-8取得二維數(shù)組的行數(shù)與特定行的元素的個數(shù)】數(shù)組名.length數(shù)組名行的索引.lengthength”即可:如要取得數(shù)組中特定行的元素的個數(shù),則須在數(shù)組名后面加上該行的索引值,再加上 ”.length” ,如下面的程序片
50、段:.numO. lengthnum2. lengthength;j+)13 14 "15 sum+=numi j;16 )1711118 )19 n 總成績是 +sum+”分!);20 )21 輸出結(jié)果:第1個人的成績?yōu)椋?0 35 26 32第2個人的成績?yōu)椋?3 34 30 29總成績是249分!程序說明:1、第6行聲明整數(shù)變量i、j做為外層與內(nèi)層循環(huán)控制變量及數(shù)組的索引,i控制行 的元素,j控制列的元素:而sum則使用來存放所有數(shù)組元素值的和,也就是總 成績。2、第7行聲明整型數(shù)組num,并為數(shù)組元素賦初值,該整型數(shù)組共有8個元素。3、第918行輸出數(shù)組里各元素的內(nèi)容,并進(jìn)行
51、成績匯總。4、第19行輸出sum的結(jié)果即為總銷售量。多維數(shù)組 ,:曹中括號再加一組即可,所以三維數(shù)組的聲明為int A,而四維19經(jīng)過前面、二維數(shù)組的練習(xí)后不難發(fā)現(xiàn),想要提高8為int A ,以此類推。93 使用多維數(shù)組時,輸入、輸出的方式和、二維相同,但是每多,維,嵌套循環(huán),的層數(shù)就必須多層,所以維數(shù)越高的數(shù)組其復(fù)雜度也就越高。以三維 數(shù)數(shù)組為例,在聲明數(shù)組時即賦初值,再將其元素值輸出并計(jì)算總和。時.范例: 01 eng帳;j+)fdyf(k=0;k<AjL length;k+) 索sum= +sum);輸出結(jié)果:A0 0 0=5A0 01=1A0l0=6A0ll=7Al0 0J=9A
52、l0l=4All0=8Alll=3sum=43由于使用的是三維數(shù)組,所以嵌套循環(huán)有三層。方法方法可以簡化程序的結(jié)構(gòu),也可以節(jié)省編寫相同程序代碼的時間,達(dá)到程序模塊 化的目的。其實(shí)讀者對方法應(yīng)該不陌生,在每個類里出現(xiàn)的main。即是個方法。使用方第116頁法來編寫程序代碼有相當(dāng)多的好處,它可簡化程序代碼、精簡重復(fù)的程序流程,并把 具有特定功能的程序代碼獨(dú)立出來,使程序的維護(hù)成本降低。方法可用如下的語法來定義:格式4-9聲明方法,并定義其內(nèi)容】返回值類型方法名稱(類型參數(shù)1,類型參數(shù)2,)方法的主體程序語句:return表達(dá)式:要特別注意的是,如果不需要傳遞參數(shù)到方法中,只要將括號寫出,不必填入任
53、 何內(nèi)容。此外,如果方法沒有返回值,則return語句可以省略。方法操作的簡單范例Testjava4_8是個簡單的方法操作范例,它在顯示器上先輸出19個星號, 換行之后再輸出“I Like Java!"這"字符串,最后再輸出19個星號.范例:01 ength;j+)""); ength取出數(shù)組的行數(shù)或列數(shù),如程r WMMpublic stargs) ipublic static void star()star ():調(diào)用d鐘0函數(shù)/如果方法避回整數(shù),則必旗麗跑州船向麗下川上i鹿女鋤子;物反孵如果h返回噴翔牌搬臚而襦屣髓財(cái),加上附口。鏟魯茜鄴作廉譬弧&qu
54、ot;):則加上int口外 以此舉推返回main()函數(shù)1是返回二維數(shù)組的一個范例。將一個二維數(shù)組傳入addlOO方法I中,在addlOO方法內(nèi)將每個元素加10之后返回它,飛后在 石五(711 驪U此藪組廠一第125頁范例:010203040506070809101112131415161718192021222324ength;j+) );"n");)public static int addlO(int arr)for(int i=0;i<i+)(for(int j=0;j<arri. length;j+)arr ij j+=10;ength 來完成。4、如果想在聲
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 未來公共政策的社會認(rèn)同與參與機(jī)制研究試題及答案
- 西方政治制度中的媒體影響力試題及答案
- 西方國家金融危機(jī)的政治后果試題及答案
- 提升網(wǎng)絡(luò)可用性的有效方法與試題及答案
- 軟件測試的回歸測試策略試題及答案
- 項(xiàng)目管理的培訓(xùn)與提升試題及答案
- 公共政策信息公開的重要性探討試題及答案
- 社會安全政策的影響分析試題及答案
- 機(jī)電工程進(jìn)出口管理試題
- 網(wǎng)絡(luò)工程師對社會的影響與貢獻(xiàn)試題及答案
- 《基于PLC的包裝機(jī)控制系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)》10000字(論文)
- 藥物制劑輔助材料試題及答案
- 教育學(xué)博士試題及答案
- 供車合同范本
- 地鐵安檢機(jī)考試題及答案
- 輸電線路工程綠色施工方案
- 粵語試題測試題及答案
- 2024北京海淀區(qū)初一(下)期末英語試題和答案
- 2025年全國國家版圖知識競賽題庫及答案(中小學(xué)組)
- 《橋梁工程概況介紹》課件
- 2024年不動產(chǎn)登記代理人《地籍調(diào)查》考試題庫大全(含真題、典型題)
評論
0/150
提交評論