




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
語(yǔ)言基礎(chǔ),包括數(shù)據(jù)、控制結(jié)構(gòu)、數(shù)組、類、包、對(duì)象、接口等;第二部分介紹了Java深入知識(shí),包括Swing圖形用戶界面,以及Java在網(wǎng)絡(luò)、多、數(shù)據(jù)庫(kù)等方面的應(yīng)用。認(rèn)證考試(SCJP)的考試,翻 本書封面貼有激光防偽,無(wú)者不得銷售在版編目(CIP)Java程序設(shè)計(jì)/唐大仕編著.—:北方交通大學(xué)(系列Ⅰ.J?Ⅱ.唐?Ⅲ.Java語(yǔ)言—程序設(shè)計(jì)—高等學(xué)?!?TP312中國(guó)版本館CIP(2003)第005216號(hào)印刷者:東光印刷:北方交通大學(xué):100044 清華大學(xué)出版社:100084 本:787×10921/16 字?jǐn)?shù):556千字 次:2003年4月第1版 2003年4月第1次印刷 數(shù):6000冊(cè) 定價(jià):29.00元系列主任:副:委員:(以姓氏筆畫為序許彥尚俊杰陳虎趙文唐大仕繆蓉潘 1Java語(yǔ)言與面向?qū)ο蟮某绦蛟O(shè)計(jì)Java語(yǔ)言簡(jiǎn)介 JavaJava的特點(diǎn) Java和C、 面向?qū)ο蟾攀?對(duì)象、類與實(shí)體 對(duì)象的狀態(tài)與行為 習(xí)題 2 Applet程序 Java程序的基本構(gòu) Java工具包JDK Application的編輯、編譯與運(yùn)行 Applet的編輯、編譯與運(yùn)行 使用jar打包程序 Java程序中的基本輸入與輸出 同時(shí)作為Application與Applet的程序 Java集成開發(fā)環(huán) 習(xí)題 Ⅰ3章數(shù)據(jù)運(yùn)算、流控制和數(shù)組 算術(shù)運(yùn)算符關(guān)系運(yùn)算符位運(yùn)算符3.2.7表達(dá)式及運(yùn)算的優(yōu)先級(jí)、結(jié)合性 簡(jiǎn)單語(yǔ)句數(shù)組 System.copyarray()方法習(xí)題 4 使用對(duì)象 方法的重載 this的使用 派生子類 super的使用 ·Ⅱ4.2.5父類對(duì)象與子類對(duì)象的轉(zhuǎn)換 包 package語(yǔ)句 import語(yǔ)句 成員的控制符 類的控制符 setor與 非控制符 其他修飾符 接口 接口的概念 定義接口 實(shí)現(xiàn)接口 對(duì)接口的································ 習(xí)題 5深入理解Java語(yǔ)言 5.1.1基本類型變量與型變量 5.1.2域變量與局部變量 5.1.3變量的傳遞 5.1.4變量的返回 5.2.1上溯造型 5.2.2虛方法調(diào)用 5.2.3動(dòng)態(tài)類型確定 5.3.1調(diào)用本類或父類的構(gòu)造方法 5.3.2構(gòu)造方法的執(zhí)行過(guò)程 5.3.3構(gòu)建方法內(nèi)部調(diào)用的方法的多態(tài)性 Ⅲ System.gc()方法 內(nèi)部類與 方法中的內(nèi)部類及類································ 習(xí)題 第6章異常處理 異常的概念 應(yīng)用舉例 習(xí)題 第7章工具類及常用算 Java語(yǔ)言基礎(chǔ) Java基礎(chǔ)類庫(kù) Object類 Math類 System類 字符串 String類 集合類 集合與Collection Set接口及HashSet tor及 Map接口及Hashtable Arrays類 ⅣCollections類 冒泡排序 選擇排序 快速排序 習(xí)題 第8章Java的多線程 Java中的線程 應(yīng)用舉例 synchronized關(guān)鍵 習(xí)題 9 應(yīng)用舉例 管理 JavaApplication命令行參數(shù) 環(huán)境參數(shù) 處理Deprecated的 Ⅴ習(xí)題 第10章圖形用戶界面 Component的方 10.3.1及 10.3.2器的 10.3.4內(nèi)部類及類 10.4.1、按鈕與動(dòng)作 Frame與窗口 Panel與容器 組件、焦點(diǎn)與框 Applet Applet的基本工作原 Applet的局限 ⅥSwing幾種Swing組件介紹基于GUI的應(yīng)用程序菜單的定義與使用習(xí)題 11 Java 編程 多編程 在Applet中獲取聲音與圖像 Java圖像編程 Java聲音編程 Java數(shù)據(jù)庫(kù)編程 Java數(shù)據(jù)庫(kù)的基本步驟 使用JTable顯示數(shù)據(jù)表 J2EE及J2ME簡(jiǎn)介 J2EE簡(jiǎn)介 J2ME簡(jiǎn)介 習(xí)題 參考文獻(xiàn) Ⅶ 筆者認(rèn)為Java具有如下突出的優(yōu)點(diǎn)。其一,Java是面向?qū)ο蟮恼Z(yǔ)言,與現(xiàn)代面向?qū)ο蟮脑O(shè)計(jì)與分析的軟件工程相一致,也言都是一致的;而其語(yǔ)法相對(duì)于C++等語(yǔ)言而言更簡(jiǎn)單,更容易掌握。其三,Java語(yǔ)言就其本身而言支持一些高級(jí)特性,如多線程、異常處理、自動(dòng)回收等,這些特性使Java成為極優(yōu)秀的語(yǔ)言之一。最后,Java具有廣泛的用途。Java具有跨平臺(tái)的特點(diǎn),在各種平臺(tái)上都有應(yīng)用,它還可以有效地進(jìn)行數(shù)據(jù)庫(kù)、多及網(wǎng)絡(luò)的程序設(shè)計(jì)。不僅如此,Java還與JavaScript十分Java語(yǔ)言的基礎(chǔ)知識(shí),包括數(shù)據(jù)類型、流程控制、類的封裝與繼承、多態(tài)、虛JavaMath、字符串、集合進(jìn)行詳細(xì)講解,以利于學(xué)對(duì)Java中的基本應(yīng)用,包括I/O、文本界面、圖形界面等,精選大量典型而實(shí)用的原理,以利于學(xué)習(xí)者能了解Java的實(shí)際應(yīng)用及發(fā)展。法,同時(shí)介紹在Java軟件工程中常用的UML工具。考慮到部分讀者有參加Sun的SCJP認(rèn)證考試的需要,本書提供了較多的習(xí)題。本書在內(nèi)容安排上,大致可以分為三部分:第一部分介紹了aa語(yǔ)言基礎(chǔ),包括數(shù)據(jù)、控aaT及g及a。本的內(nèi)容和組織方式適合作為高等學(xué)校各專業(yè)的計(jì)算機(jī)程序設(shè)計(jì)課程的,或者作為計(jì)算機(jī)技術(shù)的培訓(xùn),也可以作為Java認(rèn)證考試的考試。20034 系列 人類已進(jìn)入21世紀(jì),科學(xué)技術(shù)突飛猛進(jìn),知識(shí)經(jīng)濟(jì)初見(jiàn)端倪,特別是和網(wǎng)絡(luò)技術(shù)的迅速發(fā)展和廣泛應(yīng)用,對(duì)社會(huì)的政治、經(jīng)濟(jì)、軍事、科技和文化等領(lǐng)域產(chǎn)生越來(lái)越深刻的影響,也正在改變著人們的工作、生活、學(xué)習(xí)和交流方式。信息的獲取、處理、交流和應(yīng)用能力,已經(jīng)成為人們最重要的能力之一。培養(yǎng)一大批掌握和應(yīng)用現(xiàn)代和網(wǎng)絡(luò)技術(shù)的人才,在全球信息化的發(fā)展中占據(jù)主動(dòng)地位,不僅是經(jīng)濟(jì)和社會(huì)發(fā)展的需要,也是計(jì)算機(jī)和教育者的歷史責(zé)任。加入WTO,意味著我國(guó)要在同一個(gè)網(wǎng)絡(luò)平臺(tái)上參與國(guó)際競(jìng)爭(zhēng),同世界接軌。這對(duì)是一個(gè)機(jī)遇,也是一個(gè)。為此須加強(qiáng)全民的教育,以提高國(guó)民的整體素質(zhì),抓住國(guó)際大環(huán)境給我國(guó)經(jīng)濟(jì)騰飛帶來(lái)的難得機(jī)遇,迎接。教育部提出,要在的中小學(xué)中逐步開設(shè)必修課,從小培養(yǎng)獲取、分析、處理、發(fā)布和應(yīng)用信息的能力和素養(yǎng),在條件成熟時(shí),考慮作為普通高校招生考試的科目。國(guó)家經(jīng)貿(mào)委也提出,要像抓3年和脫困的兩大目標(biāo)那樣,把企業(yè)管理信息化建設(shè)作為新世紀(jì)經(jīng)貿(mào)工作的歷史性任務(wù)抓緊、抓好,推進(jìn)企業(yè)應(yīng)用計(jì)算機(jī)管理軟件和網(wǎng)絡(luò),用3年左右的時(shí)間,在國(guó)家重點(diǎn)企業(yè)中建立完善的企業(yè)管理信息系統(tǒng)。為了適應(yīng)這個(gè)大的形勢(shì),滿足各大專院校非計(jì)算機(jī)專業(yè)學(xué)生和社會(huì)各階層從事和急需掌握人們的需要,我們組織編寫了套《系列》。目的是讓的人以最快的速度掌握計(jì)算機(jī),學(xué)會(huì)運(yùn)用國(guó)際互聯(lián)網(wǎng)絡(luò)平臺(tái),不斷提高自身素質(zhì)和專業(yè)水平,在傳統(tǒng)產(chǎn)業(yè)改造、升級(jí)、實(shí)現(xiàn)式發(fā)展中更好地展示自己的才能,為祖國(guó)的現(xiàn)代化建設(shè)服務(wù)。ASPSQLiualasic程序設(shè)isualoxProC++HTML到XMLJaa們還將不斷對(duì)這一系列進(jìn)行補(bǔ)充或增刪,以期形成讀者歡迎的動(dòng)態(tài)系列。此系列教材可作為專院校計(jì)算機(jī)業(yè)普及也可供社各種培班選用。此系列從內(nèi)容上講,跨度較大,從計(jì)算機(jī)基礎(chǔ)知識(shí)一直到站制作,這樣可以目前,計(jì)算機(jī)市場(chǎng)火爆,需求旺盛,但是,選一本合適的又非易事。其原因之一是讀者急需使用的高版本軟件對(duì)應(yīng)的書上市甚少。造成這種現(xiàn)象的原因有三:一是信息技術(shù)發(fā)展速度太快;二是選材沒(méi)有注意超前量;三是周期太長(zhǎng)。鑒于以上原因,本系列教材在內(nèi)容上盡量注意超前量,如每一個(gè)軟件必須選擇當(dāng)前最高版本。例如:站制作我們選擇當(dāng)前流行的ASP技術(shù)和SQL網(wǎng)上數(shù)據(jù)庫(kù)以及VB編程技術(shù);在保稿質(zhì)量的前提下盡量縮短周期。其目的都是為了適應(yīng)的飛速發(fā)展,滿足讀者的需要。本系列的主要對(duì)象是非計(jì)算機(jī)專業(yè)人員,因此,在內(nèi)容上強(qiáng)調(diào)實(shí)用,盡量不涉及高處理、傳輸、保存、制作等實(shí)用技術(shù),不涉及多的理論問(wèn)題。又如《計(jì)算機(jī)局域網(wǎng)實(shí)用技管理面的內(nèi)容,讀者可按照書中所講的內(nèi)容自己獨(dú)立構(gòu)建局域網(wǎng)。在本系列中讀者會(huì)發(fā)現(xiàn),凡是操作型軟件都是以一個(gè)案例為主線進(jìn)行闡述,這是本系列書作者多年來(lái)在教學(xué)第一線經(jīng)驗(yàn)的總結(jié)。案例教學(xué)引人入勝,易理解,易掌握,能使讀者舉一反三,技術(shù)掌握扎實(shí)。介紹每一個(gè)軟件開門見(jiàn)山,語(yǔ)言簡(jiǎn)明扼要,重點(diǎn)突出,難點(diǎn)翔實(shí)編寫,同能決不重復(fù)。并在每章中附有習(xí)題,有的例題配有光盤,適合。參加本系列編寫的作者都是在大學(xué)從事課一線教學(xué)的中、青年教師,他們都有極強(qiáng)的敬業(yè)精神,本系列凝聚了他們多年豐富的教學(xué)經(jīng)驗(yàn)和心血。本系列得到了教育學(xué)院教育技術(shù)系各位老師和信息管理系余錦鳳由于本系列從策劃到僅僅用了不到一年的時(shí)間,編寫者又都擔(dān)負(fù)著繁重的教學(xué)任務(wù),在時(shí)間緊、任務(wù)重的情況下,肯定有不少不盡人意之處,誠(chéng)摯接受廣大讀者的批評(píng)、指正。1章JavaJava語(yǔ)言是流行的網(wǎng)絡(luò)編程語(yǔ)言,它的面向?qū)ο蟆⒖缙脚_(tái)、分布應(yīng)用等特點(diǎn)給編供各種各樣的動(dòng)態(tài)服務(wù),產(chǎn)生了巨大的變化。Java不僅能夠編寫小應(yīng)用程序?qū)崿F(xiàn)嵌入網(wǎng)頁(yè)Internet作為一個(gè)統(tǒng)一的拓展了傳統(tǒng)單機(jī)或/Server模式應(yīng)用程言發(fā)展為一種重要的Internet平臺(tái),并進(jìn)而、帶動(dòng)了Java產(chǎn)業(yè)的發(fā)展壯大,成為JavaJava語(yǔ)言出現(xiàn)的背景、影響及應(yīng)用1991年,SUNMicroSystem公司的JameGosling,BillJoe等人,為在電視機(jī)、控制烤的快速增長(zhǎng),促進(jìn)了Java語(yǔ)言研制的進(jìn)展,使得它逐漸成為Internet上受歡迎的開發(fā)與編程語(yǔ)言,一些著名的計(jì)算機(jī)公司紛紛了Java語(yǔ)言的使用權(quán),如 的影響,可以說(shuō),Java為Internet和WWW開辟了一個(gè)嶄新的時(shí)代。Java對(duì)傳統(tǒng)的計(jì)算模型提出了新的。業(yè)界不少人:“Java語(yǔ)言的出現(xiàn),將會(huì)要所用的機(jī)器能提供Java語(yǔ)言解釋器即可。Java語(yǔ)言將對(duì)未來(lái)軟件的開發(fā)產(chǎn)生影響,可反映在如下幾個(gè)方面。直觀的要求。Java語(yǔ)言不受地區(qū)、行業(yè)、部門、的限制,都可以將用戶的需求描述清軟件的開發(fā)方法。由于Java語(yǔ)言的面向?qū)ο蟮奶匦裕酝耆梢杂妹嫦驅(qū)ο驤ava語(yǔ)言的動(dòng)態(tài)效果。就界面而言,GUI技術(shù)達(dá)到動(dòng)畫效果;就數(shù)據(jù)而言,Java軟件最終產(chǎn)品。用Java語(yǔ)言開發(fā)的軟件可以具有可視化、可聽(tīng)化、可操作化的效 JavaJamesGosling所說(shuō),Javaapplets,它能做任何事情:Java不僅僅是一種程序設(shè)計(jì)語(yǔ)言,更是現(xiàn)代化軟件再實(shí)現(xiàn)的基礎(chǔ);Java還是未來(lái)新型OS的;將會(huì)出現(xiàn)Java;Java將構(gòu)成各種應(yīng)用軟件的開發(fā)平臺(tái)與實(shí)現(xiàn)環(huán)境,因此,Java所有面向?qū)ο蟮膽?yīng)用開發(fā),包括面向?qū)ο蟮拿枋觥⑻幚砗途C合等交互操作的設(shè)計(jì)(選擇交互、定向交互和控制流程等InternetWebIntranet(企業(yè)內(nèi)部網(wǎng))上的軟件開發(fā)(直接面向企業(yè)內(nèi)部用戶的軟件SQLJava的特簡(jiǎn)單地說(shuō),Java是定位于網(wǎng)絡(luò)計(jì)算的計(jì)算機(jī)語(yǔ)言,它的幾乎所有的特點(diǎn)也是圍繞著這如面向?qū)ο蟆⒍嗑€程等,這些也都在它的特點(diǎn)中有所反映。Java的特點(diǎn)如下。衍生自C++的Java語(yǔ)言,出于安全穩(wěn)定性的考慮,去除了C++中不容易理解和掌握的CJavaC語(yǔ)言,還是已經(jīng)掌握了C語(yǔ)言再來(lái)學(xué)Java,都會(huì)感到易于。Java是面向?qū)ο蟮木幊陶Z(yǔ)言。面向?qū)ο蠹夹g(shù)較好地解決了軟件開發(fā)過(guò)程中新出現(xiàn)的種種傳統(tǒng)面向過(guò)程語(yǔ)言所不能處理的問(wèn)題,包括軟件開發(fā)的規(guī)模擴(kuò)大、升級(jí)加快、方法。面向?qū)ο蠹夹g(shù)的是以更接近于人類思維的方式建立計(jì)算機(jī)邏輯模型,它利用類性和可重用性,大大提高了開發(fā)效率和程序的可管理性,使得面向過(guò)程語(yǔ)言難于的大規(guī)模軟件可以很方便地創(chuàng)建、使用和。C++也是面向?qū)ο蟮恼Z(yǔ)言,但是為了與C語(yǔ)言兼容,其中還包含了一些面向過(guò)程的成分;Java去除了C++中非面向過(guò)程的部分,其言,開發(fā)人員可以編寫出與具體平臺(tái)無(wú)關(guān)、普遍適用的應(yīng)用程序,大大降低了開發(fā)、行的應(yīng)用程序必須是可信賴的,不會(huì)充當(dāng)或其他操作的者而用戶本地的資源;同時(shí)它還應(yīng)該是穩(wěn)定的,輕易不會(huì)產(chǎn)生死機(jī)等錯(cuò)誤,使得用戶樂(lè)于使用。Java特有等措施,保證了Java程序運(yùn)行的可靠性。多線程是軟件技術(shù)的又一重要成果,已成功應(yīng)用在操作系統(tǒng)、應(yīng)用開發(fā)等多個(gè)領(lǐng)件的需求。Java不但內(nèi)置多線程功能,而且提供語(yǔ)言級(jí)的多線程支持,即定義了一些用于JavaTCP/IPURL地址在網(wǎng)絡(luò)上很方便地其他對(duì)象。Java的小應(yīng)用程序(Applet)是動(dòng)態(tài)、安全、跨平臺(tái)的網(wǎng)絡(luò)應(yīng)用程序。JavaAppletHTML語(yǔ)言,通過(guò)主頁(yè)發(fā)布到Internet。網(wǎng)絡(luò)用戶訪由于Java語(yǔ)言的安全機(jī)制,用戶一旦載入Applet,就可以放心地生成多的用戶界面或完成復(fù)雜的計(jì)算而不必?fù)?dān)心的。雖然Applet可以和圖像、聲音、動(dòng)畫等一樣從網(wǎng) 提供了大量的類庫(kù)以滿足網(wǎng)絡(luò)化、多線程、面向?qū)ο笙到y(tǒng)的需要??梢杂盟?jiǎn)單地實(shí)現(xiàn)Java程序的運(yùn)行平臺(tái)。低級(jí)網(wǎng)絡(luò)包用于實(shí)現(xiàn)Socket抽象圖形用戶接口包實(shí)現(xiàn)了不同平臺(tái)的計(jì)算機(jī)的圖形用戶接口部件,包括窗口網(wǎng)絡(luò)包支持Internet的TCP/IP協(xié)議,提供了與Internet的接口。它支持URL連接Java的上述種種特性不但能適應(yīng)網(wǎng)絡(luò)應(yīng)用開發(fā)的需求,而且還體現(xiàn)了軟件開發(fā)JavaC、對(duì)于變量、參數(shù)傳遞、操作符、流控制等,Java使用了和C、C++相同的傳統(tǒng),C、C++的程序員能很方便地進(jìn)行編程。同時(shí),Java為了實(shí)現(xiàn)其簡(jiǎn)單、健壯、安全等特性,也摒棄了C和C++中許多不合理的內(nèi)容。下面選擇性地講述幾點(diǎn),對(duì)于學(xué)過(guò)C語(yǔ)言或C++語(yǔ)言的讀者而言,起一個(gè)快速參考的作用。對(duì)于未學(xué)過(guò)C語(yǔ)言的讀者,可以略全局Java程序中,不能在所有類之外定義全局變量,只能通過(guò)在一個(gè)類中定義公用、靜態(tài)的變量來(lái)實(shí)現(xiàn)一個(gè)全局變量。Java對(duì)全局變量進(jìn)行了更好的封裝。而在C和C++中,依賴Goto替C、C++中用Goto來(lái)處理遇到錯(cuò)誤時(shí)跳轉(zhuǎn)的情況,使程序更可讀且更結(jié)構(gòu)化。指指針是C、C++中最靈活,也是最容易產(chǎn)生錯(cuò)誤的數(shù)據(jù)類型。由指針?biāo)M(jìn)行的內(nèi)存地以一個(gè)C++中的私有成員,從而破壞了安全性,造成系統(tǒng)的。而Java對(duì)指針進(jìn)行完在C、C++中不做檢查的錯(cuò)誤。內(nèi)存newdelete來(lái)分配和釋放內(nèi)存。再次釋放已釋放的內(nèi)存塊或未被分配的內(nèi)存塊,會(huì)造成系統(tǒng)的;同樣,忘記釋放不再使用的內(nèi)存塊也會(huì)逐漸耗盡系統(tǒng)資源。而在Java中,所而實(shí)際分配給對(duì)象的內(nèi)存可能隨程序運(yùn)行而改變,Java對(duì)此自動(dòng)地進(jìn)行管理并且進(jìn)行在C、C++中,對(duì)于不同的平臺(tái),編譯器為簡(jiǎn)單數(shù)據(jù)類型,如int、float等分別分配不的不可移植性,但在Java中,對(duì)于這些數(shù)據(jù)類型總是分配固定長(zhǎng)度的位數(shù),如對(duì)int型,類型C、C++中,由于可以通過(guò)指針進(jìn)行任意的類型轉(zhuǎn)換,因此常常帶來(lái)不安全性;而Java中,系統(tǒng)在運(yùn)行時(shí)對(duì)對(duì)象的處理要進(jìn)行類型相容性檢查,以防止不安全的轉(zhuǎn)換。運(yùn)行時(shí)系統(tǒng)對(duì)進(jìn)行控制,防止對(duì)私有成員的操作。同時(shí),Java中用import語(yǔ)句來(lái)與其結(jié)構(gòu)和聯(lián)合它通過(guò)關(guān)鍵字final來(lái)一個(gè)常量,以實(shí)現(xiàn)宏定義中廣泛使用的常量定義。Java是面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,面向?qū)ο蟮能浖_發(fā)和相應(yīng)的面向?qū)ο蟮膯?wèn)題求解是計(jì)算機(jī)技術(shù)發(fā)展的重要成果和趨勢(shì)之一。本節(jié)介紹面向?qū)ο筌浖_發(fā)和面向?qū)ο蟪堂嫦驅(qū)ο笙蟮年P(guān)系,最終形成一個(gè)廣泛聯(lián)系的可理解、可擴(kuò)充、可及更接近于問(wèn)題本來(lái)面目的對(duì)象、類與對(duì)象的狀態(tài)與對(duì)象的當(dāng)對(duì)A是對(duì)B的屬性時(shí)B包含對(duì)象A。例如,每臺(tái)電視機(jī)都包括一個(gè)顯當(dāng)對(duì)象A的是對(duì)象B的屬性時(shí),稱對(duì)象A和對(duì)象B之間是關(guān)聯(lián)關(guān)系。所謂對(duì)象的是指對(duì)象的名稱、地址、句柄等可以獲取或該對(duì)象的途徑。相對(duì)于對(duì)象本身,對(duì)象的所占用的內(nèi)存空間要少得多,它只是找到對(duì)象的一條線索。通過(guò)它,程序可以面向?qū)ο蟮能浖_發(fā)面向?qū)ο蟮能浖_發(fā)過(guò)程可以大體劃分為面向?qū)ο蟮姆治?ObjectOrientedysis,OOA)、面向?qū)ο蟮脑O(shè)計(jì)(ObjectOrientedDesign,OOD)、面向?qū)ο蟮膶?shí)現(xiàn)(ObjectOrientedOOA模型。分析階段的工作應(yīng)該由OOA模型,將用戶的需求準(zhǔn)確地表達(dá)出來(lái)。OOA模型有很多種設(shè)計(jì)和表達(dá)方法,如使用較為廣泛的Coad&Yourdon的OOA模型。最終結(jié)果:OOD模型。面向?qū)ο蟮脑O(shè)計(jì)將在OOA模型的基礎(chǔ)上引入界面管理、任務(wù)管理和數(shù)據(jù)管理三部分的內(nèi)容,進(jìn)一步擴(kuò)充OOA模型。其中,界面管理負(fù)責(zé)整個(gè)系統(tǒng)的人機(jī)界面的設(shè)計(jì);任務(wù)庫(kù)的接口。這三部分再加上OOA模型代表的“問(wèn)題邏輯”部分,就構(gòu)成了最初的OOD模型。面向?qū)ο蟮脑O(shè)計(jì)還需要對(duì)最初的OOD模型做進(jìn)一步的細(xì)化分析、設(shè)計(jì)和驗(yàn)證。在“問(wèn)題功能和功能的實(shí)現(xiàn)的明確規(guī)定等;細(xì)化驗(yàn)證主要指對(duì)各對(duì)象類間的相容性和一致性的驗(yàn)證,對(duì)各個(gè)類、類內(nèi)成員的權(quán)限的嚴(yán)格合理性的驗(yàn)證,也包括驗(yàn)證對(duì)象類的功能是象模型;將模型細(xì)化、設(shè)計(jì)類,包括類的屬性和類間相互關(guān)系,同時(shí)是否有可以直接由于對(duì)象的概念能夠以更接近實(shí)際問(wèn)題的原貌和實(shí)質(zhì)的方式來(lái)表述和處理這些問(wèn)之上從容地完成,而不會(huì)入傳統(tǒng)方法中不不原有設(shè)計(jì),重新考慮數(shù)據(jù)構(gòu)和程Java語(yǔ)言有哪些主要特點(diǎn)2章簡(jiǎn)單的Java本章從介紹和分析最簡(jiǎn)單的Java程序例子出發(fā),講述開發(fā)Java程序的基本步驟、Java程序的構(gòu)成、基本輸入輸出編程及Java的開發(fā)工具。ApplicationApplet根據(jù)結(jié)構(gòu)組成和運(yùn)行環(huán)境的不同,Java程序可以分為兩類:JavaApplication和JavaApplet則是嵌HTML網(wǎng)頁(yè)(Web頁(yè)面)中的非獨(dú)立程序,由Web瀏覽器內(nèi)部包含JavaApplication程例2- oWorldApp.java簡(jiǎn)單的Application程序publicclass oWorldApp{//anapplicationpublicstaticvoidmain(Stringargs[]){ o}}o程序中,首先用保留字class來(lái)一個(gè)新的類,其類名為oWorldApp,它是一個(gè)公共類(public)。整個(gè)類定義由大括號(hào){}括起來(lái)。在該類中定義了一個(gè)main()方法,其中public表示權(quán)限,指明所有的類都可以使用這一方法;static指明該方法是一個(gè)類方它可以通過(guò)類名直接調(diào)用;void則指明main()解釋器以main()作為來(lái)執(zhí)行程序。Java程序中可以定義多個(gè)類,每個(gè)類中可以定義多main()方法定義中,括號(hào)中的Stringargs[]是傳遞給main()方法的參數(shù),參數(shù)名為args,String0main()方法的實(shí)現(xiàn)(大括號(hào)中),只有一條語(yǔ)句: o它用來(lái)實(shí)現(xiàn)字符串的輸出,這條語(yǔ)句實(shí)現(xiàn)與C語(yǔ)言中的printf語(yǔ)句和C++中cout<<語(yǔ)現(xiàn)在我們可以運(yùn)行該程序。首先把它放到一個(gè)名為oWorldApp.java的文件中,這 oApplet例2- oWorldApplet.java簡(jiǎn)單的Applet程序importjava.awt.*;publicclass oWorldAppletextendsApplet{//anappletpublicvoidpaint(Graphicsg){g.drawString o}}這是一個(gè)簡(jiǎn)單的Applet(小應(yīng)用程序)。程序中,首先用import語(yǔ)句輸入java.awt和Appletpaint()方法,其中參數(shù)gGraphics類,它表明當(dāng)前作畫的上下文。在 得到字節(jié)碼文件oWorldApplet.classAppletmain()方法作Java解釋器的,必須編寫HTML文件,把該Applet嵌入其中,然后用appletviewer來(lái)運(yùn)行,或在支持Java的瀏覽器上運(yùn)行。它的<HTML>文件如下:<TITLE>AnApplet<applet 其中,用<Applet>標(biāo)記來(lái)啟動(dòng)oWorldApplet,code指明字節(jié)碼所在的文件,widthheightappletHTML文件存入o.html,然后運(yùn)行: 2-1程序的運(yùn)行結(jié)從上述例子中可以看出,Java程序是由類構(gòu)成的,對(duì)于一個(gè)應(yīng)用程序來(lái)說(shuō),必須有一個(gè)類中main()方法applet來(lái)說(shuō),它Applet一個(gè)子類。在類的定義中,應(yīng)包含類變量的和類中方法的實(shí)現(xiàn)。Java在基本數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、控制語(yǔ)句等方面與C、C++基本上是相同的,但它同時(shí)也增加了一些新的內(nèi)容,在以后的各章中將詳細(xì)介紹。這里只是讓讀者對(duì)Java程序有一個(gè)初步的了解。Java程序的基本下面的程序是一個(gè)一般的Java程序文件:packagech02;publicclass{publicstaticvoidmain(String[]{charc='System.out.print("Pleaseinputachar:");c=(char)}catch(IOExceptione){}System.out.println("Youhaveentered:"+c}}package語(yǔ)句(01句import語(yǔ)句(0句或多句(1個(gè)或多個(gè)類定義)import語(yǔ)句表示引入其他類的庫(kù),便于使用。import0或多句,它必須放ava程序中定義類使用關(guān)鍵字class體部分用來(lái)定義屬性和方法這兩種類的成員,其中方法類似于其他高級(jí)語(yǔ)言中的函數(shù),而屬性則類似于變量。類頭部分除了類名之外,還可以說(shuō)明類的繼承特性,當(dāng)一個(gè)類被定義為是另一個(gè)已經(jīng)存在的類(稱為這個(gè)類的父類)的子類時(shí),它就可以從其父類中繼承一些已定義好的類成員而不必自己重復(fù)編碼。MyJavaApplicationmain。用來(lái)標(biāo)志方法頭的是一對(duì)小括main等;小括號(hào)里面是該方法使用的形同其他高級(jí)語(yǔ)言一樣,語(yǔ)句是構(gòu)成Java程序的基本單位之一。每一條Java語(yǔ)句都由分號(hào){}packageimport語(yǔ)句之外的其他的執(zhí)行具體操作的語(yǔ)句,都只能存在于類比語(yǔ)句更小的語(yǔ)言單位是表達(dá)式、變量、常量和關(guān)鍵字等,Java的語(yǔ)句就是由它們構(gòu)?Java?JavaApplication中,這個(gè)主類是mainJavaAppletApplet的子類。主類是Java程序執(zhí)行的點(diǎn)。同一個(gè)Java程序中定義的若干類之間沒(méi)有嚴(yán)格的邏輯關(guān)系要求,程。Java編程也不例外,一般可以分為編輯源程序、編譯生成字節(jié)碼和解釋運(yùn)行字節(jié)碼幾Java工具包Java編程的基本工具包是JDK(JavaDevelopmentKit。JDK是Sun公司免費(fèi)提供的開發(fā)、運(yùn)行Java程序的基本軟件,它可以在Windows及Unix兩種平臺(tái)上使用。常用的版本是JDK1.2.2,JDK1.3.0,JDK1.4等??梢詮膆 ,如jdk1.4.1,此 稱為JDK安裝 的編輯、編譯與Java源程序是以.javaJava集成開發(fā)環(huán)境中的源代碼編輯器來(lái)編寫,也可以用其他文本編輯工具,如Windows中的記事本或DOS中的EDIT以最簡(jiǎn)單的記事本(Notepad)軟件為例,打開記事本,輸入下面一段程序(即例2-所示的程序publicclass oWorldApp{//anapplicationpublicstaticvoidmain(Stringargs[]){ o}}有類型”,文件名要與程序中的publicclass的類名一致,這里的文件名應(yīng)為oWorldApp.java。文件名的大小寫最好也要保持與類名一與其他語(yǔ)言一樣,源程序(.java文件)要經(jīng)過(guò)編譯才能運(yùn)行。編譯的過(guò)程實(shí)際上是將java源程序轉(zhuǎn)變?yōu)樽止?jié)碼(bytecode)文件。字節(jié)碼文件的擴(kuò)展名為.class,其中包含的是java虛擬機(jī)的指令。commandcmd回車然后進(jìn)入到存放源文件的(d:\tangd:<回車 tang回車 這里,c:\j2sd1.4.1為JDK的安裝 為了簡(jiǎn)化寫c:\j2sdk1.4.1\bin,可以先鍵入命令 javac選項(xiàng)源文件 編譯成功后,javac會(huì)產(chǎn)生相應(yīng)的.class文件,這就是字節(jié)碼文件。程序的運(yùn)行就是執(zhí)行.class文件中的指令的過(guò)程。由Java源代碼編譯生成的字節(jié)碼不Java程序時(shí),首先應(yīng)該啟動(dòng)這個(gè)虛擬機(jī),然后由它來(lái)JavaJavaJava字節(jié)碼程序跟具體的可以把這種不同軟硬件平臺(tái)的具體差別隱,使得Java字節(jié)碼程序在不同的計(jì)算機(jī)上Java虛擬機(jī),而不必考慮具體的平臺(tái)差別,從而實(shí)現(xiàn)了真正的二進(jìn)制代碼JDKjava.exeJavaApplication是由若干個(gè)類定義組成的獨(dú)立的解釋型程序,其中必須有一mainJavaApplicationJava setclasspath=%classpath%;.;c:\jdk1.2\lib.jar器在哪里找到.class文件及相關(guān)的庫(kù)程序。運(yùn)行的效果如圖2-2所示。圖2- setsetJAVA_HOME=c:\j2sdk1.4.1setsetsetsetset2-3環(huán)境變量的設(shè)Applet的編輯、編譯與其解釋器,來(lái)解釋執(zhí)行JavaApplet的字節(jié)碼程序。HTMLInternetWWW中使用的通用語(yǔ)言,它可以將網(wǎng)絡(luò)上不同地點(diǎn)的多信息有組織地呈現(xiàn)在WWW瀏覽器中,而JavaApplet的作用正是HTMLWWW中引入動(dòng)態(tài)交互importjava.awt.*;publicclass oWorldAppletextendsApplet{//anappletpublicvoidpaint(Graphicsg){g.drawString o}} javacJavaAppletHTML文件時(shí),HTMLWeb頁(yè)面中劃定一塊區(qū)域AppletHTMLpaint來(lái)編排超文本信HTML文件中嵌入JavaApplet同樣需要通過(guò)使用一組約定好的特殊WIDTH:指明JavaApplet程序在HTML文件所對(duì)應(yīng)的Web頁(yè)面中占用區(qū)域的寬度。HTMLHTML文件相同WWWHTML文件中嵌入的名字自動(dòng)去查找和執(zhí)行這個(gè)字節(jié)碼關(guān)于HTML語(yǔ)言的具體規(guī)則和使用方法,本書就不再介紹了,感的讀者可以查看有關(guān)的參考書目或相關(guān) <TITLE>AnApplet<applet 可以用支持Java的瀏覽器(如IE,Netscape)來(lái)打開這個(gè)文件。當(dāng)WWW瀏覽器此HTML文件并顯示時(shí),它會(huì)自動(dòng)此HTML中指定的JavaApplet字節(jié)碼,然后調(diào)用內(nèi)置在瀏覽器中Java解釋器來(lái)解釋執(zhí)行到本機(jī)的字節(jié)碼程序。其效果如圖2-4所示。圖2- 2-5AppletViewer查看的結(jié)綜上所述,JavaApplet是由若干個(gè)類定義組成的解釋型程序,其中必須有一個(gè)類是系并使用內(nèi)置Java解釋器的瀏覽器來(lái)解釋執(zhí)行這個(gè)字節(jié)碼文件。使用jar打包縮成一個(gè)文件,這個(gè)文件稱為jar(JavaArchive)文件。jarcvfclasses.jarFoo.class時(shí)記入jar文件中。如,用一個(gè)存在的(manifest)文件“mymanifest”將foo/下的所有文件存檔到一個(gè)名為“classes.jar”的存檔文件中:jarcvfmclasses.jarmymanifest-C其中,mainfest文件的內(nèi)容比較簡(jiǎn)單,它的每一行是由一個(gè)關(guān)鍵字、一個(gè)冒號(hào)及一個(gè)字符java–jar程序JavaApplication程序輸入和輸出的可以是文也可以是圖形界面,JavaApplet字符界面的輸入與串之間或字符串與其他變量間可以用加號(hào)(+)表示連接。System.outprint()方法可以輸出一個(gè)字符串并換行。如例2-3,輸入一個(gè)字符,并顯示這個(gè)字符。例2- AppCharInOut.java字符的輸入與輸出importpublicclass{publicstaticvoidmain(String[]{charc='System.out.print("Pleaseinputachar:");c=(char)}catch(IOExceptione){}System.out.println("Youhaveentered:"+c);}}2-6字符的輸入與輸System.in的read()方法只能讀入一個(gè)字符,不便于使用,例2-4中,將System.in進(jìn)行“包裝”,用它構(gòu)造(new)出一個(gè)InputStreamReader對(duì)象,進(jìn)而構(gòu)造出一個(gè)BufferedReader對(duì)象,而BufferedReader對(duì)象有一個(gè)readLine方法,可用于讀入一串字符。例2- AppLineInOut.java整行的輸入importpublicclass{publicstaticvoidmain(String[]{Strings=System.out.print("Pleaseinputaline:");BufferedReaderin=newBufferedReader(newInputStreamReader(System.in));s=}catch(IOExceptione){}System.out.println("Youhaveentered:"+s);}}2-7整行的輸2-4為輸入一行文字并顯示。有時(shí),還需要將輸入的字符串轉(zhuǎn)成數(shù)字(double例2- AppNumInOut.java數(shù)字的輸入與輸出importjava.io.*;publicclassAppNumInOut{publicstaticvoidmain(String[]{Strings="";intn=0;doubled=0;BufferedReaderin=newnewInputStreamReader(System.in));System.out.print("Pleaseinputanint:");s=in.readLine();n=Integer.parseInt(s);System.out.print("Pleaseinputadouble:");s=in.readLine();d=Double.parseDouble(sSystem.out.println("Youhaveentered:"+n+"and"+d}}2-8數(shù)字的輸入與輸Applet圖形界面輸入與例2- AppletInOut.java圖形界面輸入與輸出importjava.applet.*;importjava.awt.*;publicclassAppletInOutextends{TextFieldinnewTextField(10);ButtonbtnnewButton("求平方Labelout=newLabel("用于顯示結(jié)果的publicvoid{setLayout(newFlowLayout());add(in);add(btnadd(out}{publicvoidactionPerformed(ActionEvente{Strings=doubled=Double.parseDouble(s);doublesq=d*d;out.setTextd的平方是:sq}}}在本程序中,生成了一個(gè)文本框in用于輸入,一個(gè)out用于輸出,一個(gè)按鈕btn件對(duì)象是當(dāng)用戶單擊此按鈕時(shí),對(duì)象的actionPerformed()方法被調(diào)用,該方getText()Double.parseDouble()方法轉(zhuǎn)為一個(gè)實(shí)數(shù)(double2-9AppletJavaApplication圖形界面輸入與JavaApplet程序不同,JavaApplication程序沒(méi)有瀏覽器提供的現(xiàn)成的圖形界面可以例2- AppGraphInOut.javaApplication圖形界面輸入與輸出importjava.awt.*;publicclass{publicstaticvoidmain(Stringargs[]{new}}classAppFrameextends{TextFieldinnewTextField(10);ButtonbtnnewButton("求平方Labelout=newLabel("用于顯示結(jié)果的public{setLayout(newFlowLayout());add(in);add(btnadd(outbtn.addActionListener(newBtnActionAdapter());setSize(400,100);}{publicvoidactionPerformed(ActionEvente{Strings=doubled=Double.parseDouble(s);doublesq=d*d;out.setTextd的平方是:sq}}}2-10Application圖形界面輸入AppFrame時(shí),設(shè)定了該Frame的大?。╯etSize,并用show()方法顯示出來(lái)。同時(shí)作為Application與Applet的程為了使同一程序既能作為Applet,又能作為Application,這就需要具備以例2- importjava.awt.*;importjava.applet.*;publicclassAppAppletInOutextends{publicstaticvoidmain(Stringargs[]{Frameframe=newAppAppletInOutapp=newAppAppletInOut();frame.add(app);frame.setSize(400,100);}TextFieldinnewTextField(10);ButtonbtnnewButton("求平方Labelout=newLabel("用于顯示結(jié)果的publicvoid{setLayout(newFlowLayout());add(in);add(btnadd(out}{publicvoidactionPerformed(ActionEvente{Strings=doubled=Double.parseDouble(s);doublesq=d*d;out.setTextd的平方是:sq}}}
2-11運(yùn)行幾種輔助工具的JavacJava,AppletViewerJava程序。這樣的輔助工具主要有:JCreator,Editplus,Kawa,java,UltraEdit等。它們是免費(fèi)軟件或共享軟件,可以從Internet后安裝并使用。當(dāng)然在安裝這些軟件工具之前,系統(tǒng)中必須首先安裝JDK。JCreator,Kawa及java的使用方式相似,下面以JCreator為例進(jìn)行介紹JCreator是一個(gè)非常好用的工具,有兩種版本,JCreatorLEJCreatorPro,前者是免JCreator的界面如2-12所示2-12JCreator 在組織文件時(shí),有下面(File(Project(orkspaceJCreatorFile/New來(lái)創(chuàng)建文件、工程或工作區(qū)。常用的方法是,新建一個(gè)工拖放到JCreator,然后即可進(jìn)行編輯。JCreator中編譯和運(yùn)行Java程序十分簡(jiǎn)單,直接點(diǎn)擊上的編譯、運(yùn)行按JavaEditPlus與UltraEdit的使用方式相似,下面以EditPlus為例進(jìn)行EditPlus是共享軟件,它的主要功能是文本編輯,對(duì)編輯Java程序及HTML網(wǎng)頁(yè)也有較好的支持。在編輯時(shí),對(duì)于一些重要的還以醒目的顏色顯示出來(lái),這樣可以使閱EditPlus界面如圖2-13所示。左邊為文件夾及文件的顯示區(qū),中間為編輯窗口,下邊2-13EditPlus界2-14所示。2-14User2-1UserTools的 CompileRunc:\jdk1.3\bin\java.exeInitialCapture選不選設(shè)置好以后,可以按快捷鍵Ctrl+1及Ctrl+2EditPlus來(lái)編輯程序,然后在命令行狀態(tài)下用JDK令進(jìn)行編譯和運(yùn)行幾種集成工具的(IDEJBuilder,Sun公司的JavaWorkshop,IBM公司的VisualAgeforJavaOracle公司的Java這里以JBuilder為例進(jìn)行介紹。JBuiler將相關(guān)的文件(Java程序、HTML網(wǎng)頁(yè)、等)組織成Project(工程)。整個(gè)工程存于一個(gè)及其子下。JBuiler中可以建立各種工程和文件,其中包括常用的Application及Applet。2-15JBuilder的界 Source:源程序,可以進(jìn)行源程序 Design:設(shè)計(jì)視圖,可以進(jìn)行圖形化界面設(shè)計(jì)。Doc:自動(dòng)生成的文History:歷史SourceDesign視圖,分別進(jìn)行代碼的編寫及界面的設(shè)2-16Design視圖中,頂部是一注意:FrameAppletLayoutnull2-16設(shè)計(jì)視JBuilder將Web和企業(yè)應(yīng)用開發(fā)與靈活高效的團(tuán)隊(duì)開發(fā)環(huán)境結(jié)合在一起,為開發(fā)者提供了一個(gè)端對(duì)端應(yīng)用開發(fā)環(huán)境。JBuilder支持的Java標(biāo)準(zhǔn),它的可視化工具和向?qū)箲?yīng)用開發(fā)變得方便快捷。JBuilder同時(shí)支持Windows,Linux,Solaris三種開發(fā)平臺(tái)。由于Internet分布式的關(guān)鍵性企業(yè)級(jí)應(yīng)用、建立互聯(lián)數(shù)據(jù)庫(kù)、設(shè)計(jì)數(shù)據(jù)驅(qū)JBuilder的一些高級(jí)特性做簡(jiǎn)單介紹,讀者在今后的學(xué)習(xí)、開發(fā)過(guò)程中可以JBuilder有一個(gè)可擴(kuò)展的源碼編輯器。它的代碼向?qū)ё詣?dòng)相關(guān)Java對(duì)象的屬性、、方法和包的上下文提示。同時(shí),JBuilder的可視化界面設(shè)計(jì)功能可以大大地縮短界JBuilder擁有專業(yè)化的圖形界面調(diào)試,支持調(diào)試和多線程調(diào)試。調(diào)試器支持各程可能分布在系統(tǒng)之下,如HP-UX,Tru64,AIX,等等,支持Java2調(diào)試的任何JBuilderWeb瀏覽器的純Java程序。對(duì)于Servlets,開發(fā)者可以在本地或的Servlet容器中對(duì)之進(jìn)行WebSphere和新的BorlandAppServer等應(yīng)用平臺(tái)提供無(wú)縫支持。了對(duì)的WebService的支持,可以方便地調(diào)用WebService,也可方便地將現(xiàn)有的程序轉(zhuǎn)變?yōu)閃ebService。JBuilderdbSwing組件庫(kù)可以很容易地開發(fā)數(shù)據(jù)庫(kù)應(yīng)用。開發(fā)者可以使界面對(duì)象直接與數(shù)據(jù)庫(kù)相連,從而快速生成數(shù)據(jù)驅(qū)動(dòng)的動(dòng)態(tài)Web應(yīng)用。JBuilder的集成團(tuán)隊(duì)開發(fā)環(huán)境非常靈活并具有可擴(kuò)展的特性,簡(jiǎn)化了大型分散開發(fā)團(tuán)JavaWorkShop是Sun公司的一個(gè)集成的Java語(yǔ)言開發(fā)環(huán)境,它包Project管理器。ProjectApplet的集合,它還包括編譯、調(diào)試、運(yùn) Build管理工具。Build管理工具是項(xiàng)目的編譯器,在編譯過(guò)程中,如果某個(gè)文編寫一個(gè)JavaApplication,利用JDK軟件包中的工具編譯并運(yùn)行這個(gè)程序,在屏 etoJavaWorld!”。編寫一個(gè)JavaApplet,使之能夠在瀏覽器中顯示 瀏覽器這個(gè)HTML文件規(guī)定的Web頁(yè)面3數(shù)據(jù)同的數(shù)據(jù)類型,不同的數(shù)據(jù)類型有不同的數(shù)據(jù)結(jié)構(gòu)、不同的方式,并且參與的運(yùn)算也types類型(referencetypes)。Java中定義了4類、8種基本數(shù)據(jù)類型見(jiàn)表3-13-1Java的基本數(shù)據(jù)類占用字節(jié)布爾1true,字節(jié)10-短整20-整40 長(zhǎng)整8 7單精度浮點(diǎn)41.4×1084.9×10字符2'\u0000'整數(shù)型——byteshortint,short(,int(,long(,char(字符型)是用Unicode編碼表達(dá)的字符,在內(nèi)存中占兩個(gè)字節(jié)。由于Java的字符類型采用了一種新的國(guó)際標(biāo)準(zhǔn)編碼方案——Unicode編碼,這樣便于東方字符和西方字符的處理。因此,與其他語(yǔ)言相比,Java處理多語(yǔ)種的能力大大加強(qiáng)。除基本數(shù)據(jù)類型外,Java中還存在著一種數(shù)據(jù)類型,包括數(shù)組(array)、類(class)Java編程時(shí),經(jīng)常遵循以下的編碼習(xí)慣(雖然不是強(qiáng)制性的:類名首字母應(yīng)該大。例ThisIsAClassName,常如0x2F代表十進(jìn)制的數(shù)字47。為一般浮點(diǎn)(單精度)常量和雙精度浮點(diǎn)常量?jī)煞N。其中,單精度常量后跟一個(gè)f或F,雙精度常量后跟一個(gè)dD。雙精度常量后的dD可以省略。3.14f-2.17d5.3e-2表示5.3×10-2,123E3D代表123×103(雙精度。中的字符,也可以是轉(zhuǎn)義符,還可以是要表示的字符所對(duì)應(yīng)的八進(jìn)制數(shù)或Unicode碼。清楚這些特殊字符,Java中引入了一些特別的定義。所有的轉(zhuǎn)義符都用反斜線(\)開頭,后面跟著一個(gè)字符來(lái)表示某個(gè)特定的轉(zhuǎn)義符,如表3-2所示。3-2 13位八進(jìn)制數(shù)所表示的字符14位十六進(jìn)制數(shù)所表示的字符單引號(hào)字雙引號(hào)字反斜杠字回?fù)Q退字符串常量是用雙引號(hào)括起的一串若干個(gè)字符(0個(gè))。字符串中可以包括轉(zhuǎn)義如:"oJava中的變量必須先后使用,變量包括指明變量的數(shù)據(jù)類型和變量的名稱,必要inta,b,c;doublex=12.3;例3- DeclareAssign.java并賦值publicclass{publicstaticvoidmain(Stringargs[])booleanb=true;//boolean型變量并賦intx, //int型變floatf=4.5f;//float型變量并賦值doubled=3.1415;//double型變量并賦值charc; //char型變量c x=12; int型變量賦值System.out.println("b="+b);System.out.println("x="+x);System.out.println("y="+y);System.out.println("f="+f);System.out.println("d="+d);System.out.println("c="+c);}}程序的書寫與Java程序中最基本的成分是常量、變量、運(yùn)算符等。除這些成分外,Java程序中還有Java中可以采用三種注釋//用于單行注釋。注釋從///**/用于多行注釋。注釋從/*開始,到*//***/Javadoc注釋。它以/**開始,到*/其中3種注JDKjavadoc而采用的。javadoc能識(shí)別注釋中用標(biāo)記@標(biāo)識(shí)的一些特殊變量,并把doc注釋加入它所生成的HTML文件。常用的@標(biāo)記如@see:其他類@version:版本信息。@author:作者信@param:參數(shù)名@return:說(shuō)明@exception:完整類名例3- oDate.java加入了注釋的程序,以用于javadoc/**ASimpleJavaexample* oDate.java1.5*Disysastringandtoday's@authorBruce@versionimportjava.util.*;publicclass oDate{/**Soleentrypointtoclass&@paramargsarrayofstring@returnNoreturn@exceptionexceptionsNoexceptionspublicstaticvoidmain(String[]{System.out.println(" o,it's:");System.out.println(newDate());}} 3-1javadoc生成的文操作數(shù)。對(duì)于一元運(yùn)算符來(lái)說(shuō),可以采用前綴表達(dá)式(如++i)和后綴表達(dá)式(i++),對(duì)于二元運(yùn)算符來(lái)說(shuō)則采用中綴表達(dá)式(如a+b)。按照運(yùn)算符功能來(lái)分,基本的運(yùn)算符有下面(3)布爾邏輯運(yùn)算符(!,&&,||,&,|)位運(yùn)算符(>>,<<,>>>,&,|,^,~)條件運(yùn)算符:)(包括分量運(yùn)算符[]instanceof,內(nèi)存分配運(yùn)算符new,強(qiáng)制類型轉(zhuǎn)換運(yùn)算符(類型),方法調(diào)用運(yùn)算符()等)。算術(shù)運(yùn)3-3二元算術(shù)運(yùn)算 +op1+加-op1-減*op1*乘/op1/除%op1%取模(求余de”,得到字符串“abcde”。3-4一元算術(shù)運(yùn)算 ++正--負(fù)++op,op--op,op-1,但作為表達(dá)式,i++與++i是有區(qū)別的:i++ii1i++i,而i的值變?yōu)閕+1。i--與--i例3- publicclassArithmaticOp{publicstaticvoidmain(Stringargs[]){inta=5+4;//a=9intb=a*2;//b=18intc=b/4;//c=4intd=b-c;//d=14inte=-d;//e=-14intf=e%4;//f=-2doubleg=18.4;doubleh=g%4;//h=2.4inti=3;intj=i++;//i=4,j=3intk=++i;System.out.println("a="+a);System.out.println("b="+b);System.out.println("c="+c);System.out.println("d="+d);System.out.println("e="+e);System.out.println("f="+f);System.out.println("g="+g);System.out.println("h="+h);System.out.println("i="+i);System.out.println("j="+j);}}C:\>javaa9bc4de-f-ghi5j3k5關(guān)系運(yùn)算符,如表3-5所示。3-5關(guān)系運(yùn)算 >op1>op1大于op1>=op1大于或等于<op1<op1小于op1<=op1小于或等于op1==op1與op2相op1!=op1與op2不相truefalseCC++10。if(a>b&&邏輯運(yùn)3-6邏輯運(yùn)算運(yùn)算 &邏輯op1&兩操作數(shù)均為true時(shí),結(jié)果才為|邏輯op1|兩操作數(shù)均為false時(shí),結(jié)果才為!取!op的truefalse相^異op1^兩操作數(shù)同真假時(shí),結(jié)果才為簡(jiǎn)潔op1&&兩操作數(shù)均為true時(shí),結(jié)果才為簡(jiǎn)潔op1||兩操作數(shù)均為false時(shí),結(jié)果才為!falsefalse;對(duì)于||,只要左邊表達(dá)式為true,就不計(jì)算右邊表達(dá)式,則整個(gè)表達(dá)式為true。例3- 關(guān)系和邏輯運(yùn)算符的使用publicstaticvoidmain(Stringargs[]){inta=25,b=3;booleand=a<b;//d=falseSystem.out.println("a<b="+d);inte=3;if(e!=0&&a/e>5)System.out.println("a/e="+a/e);intif(f!=0&&a/f>5)System.out.println("a/f="+a/f);}}
a<b=falsea/e=8f=注意:3-4if0e!=0false,所以就不需要對(duì)a/e進(jìn)行運(yùn)位運(yùn)3-7位運(yùn)算 ~~&op1&按位|op1|按位^op1^op1>>op1右移op2op1<<op1左移op2op1>>>op1無(wú)符號(hào)右移op2的符號(hào)(如&,|,^)與邏輯運(yùn)算符的寫法相同,但邏輯運(yùn)算符的操作數(shù)為boolean型。Java使用補(bǔ)碼來(lái)表示二進(jìn)制數(shù),在補(bǔ)碼表示中,最為符號(hào)位,正數(shù)的符號(hào)位為0,負(fù)數(shù)為1。補(bǔ)碼的規(guī)定如下。對(duì)正數(shù)來(lái)說(shuō),最為0,其余各位代表數(shù)值本身(以二進(jìn)制表示),如 碼。如,-42的補(bǔ)碼為 ,再加1后為) ~是一元運(yùn)算法,對(duì)數(shù)據(jù)的每個(gè)二進(jìn)制位取反,即把1變?yōu)?,把0變?yōu)?。 。注意:~運(yùn)算符與-運(yùn)算符不同,~21≠-210,0&10,1&00,1&11。 0|1=1,1|0=1,1|1=1。(|按位或可以用來(lái)把某些特定的位置1,如對(duì)數(shù) (|0=1,0^1=1,1^1=0。(^ (^數(shù)a、b的值,可通過(guò)下列語(yǔ)句實(shí)現(xiàn):a ,ba=a^b;//ab=b^a;//b=a=a^b;//a2位,右補(bǔ)0,若a= ,則a<<2= 。左移后溢出,舍棄不起作用。在不產(chǎn)生溢出的情況下,左移一位相當(dāng)于乘2,而且用左移來(lái)實(shí)現(xiàn)乘法比乘法運(yùn)算速2位,移到右端的低位被舍棄,最則移入原來(lái)的值。如,a , ;b ,則b>>2 但不同的是最補(bǔ)0。如,a= ,則a>>>2= ;b= ,則 如果兩個(gè)數(shù)據(jù)長(zhǎng)度不同(byteint型),對(duì)它們進(jìn)行位運(yùn)算時(shí),如a&b,abyte型,binta24a0a為負(fù),則左側(cè)填滿1。例3- publicclassstaticStringbinary[]={"0000","0001","0010","0011",staticfinalintFLAG1=1;//makeFLAG1aconstant(0x0001)staticfinalintFLAG2=2;//makeFLAG2aconstant(0x0010)staticfinalintFLAG4=8;//makeFLAG4aconstant(0x1000)publicstaticvoidmain(Stringargs[]){intflags=0;//clearallflags=flags|FLAG4;//setflag4System.out.println("Setflag4...flags="+binary[flags]);flags=flags^FLAG1;//revertflag1System.out.println("Revertflag1...flags="+binary[flags]);flags=flags^FLAG2;//revertflag2System.out.println("Revertflag2...flags="+binary[flags]);intcf1=~FLAG1;flags=flags&cf1;//clearSystem.out.println("Clearflag1...flags="+binary[flags]);intf4=flags&FLAG4;f4=f4>>>3;//getflag4System.out.println("Getflag4...flag4="+f4);intf1=flags&FLAG1;//getflag1System.out.println("Getflag1...flag1="+f1);}}C:\>javaClearallflags...flags=0000Setflag4...flags=1000Revertflag1...flags=1001Revertflag2...flags=1011Clearflag1...flags=1010Getflag4...flag4=1Getflag1...賦值與強(qiáng)制類型換,Java會(huì)自動(dòng)轉(zhuǎn)換;而將變量從較長(zhǎng)的數(shù)據(jù)類型轉(zhuǎn)換成較短的數(shù)據(jù)類型時(shí),則必須做強(qiáng)byte intint bytevar=varopvar表3-8列出了Java中的擴(kuò)展賦值運(yùn)算符及等效的表達(dá)式。3-8擴(kuò)展賦 等效表達(dá)op1+=op1=op1+op1-=op1=op1-op1*=op1=op1*op1/=op1=op1/op1%=op1=op1%op1&=op1=op1&op1|=op1=op1|op1^=op1=op1^op1>>=op1=op1>>op1<<=op1=op1<<op1>>>=op1=op1>>>條件運(yùn)x?y:zx為假,則整個(gè)運(yùn)算結(jié)果為表達(dá)式z的值。其中,yz需要返回相同的數(shù)據(jù)類型。ratio=denom==0?0:za>0a- zaza>ba za、b符來(lái)實(shí)現(xiàn)是一種簡(jiǎn)練的方法。這時(shí),它實(shí)現(xiàn)了if-else語(yǔ)句的功能。表達(dá)式及運(yùn)算的優(yōu)先級(jí)在對(duì)一個(gè)表達(dá)式進(jìn)行運(yùn)算要按運(yùn)算符的優(yōu)先順序從高向低進(jìn)行,表3-9給出了Java中3-9運(yùn)算符的優(yōu)先級(jí)及結(jié)合性(表頂部的優(yōu)先級(jí)較高運(yùn)算符的優(yōu)先運(yùn)算符的結(jié)合·[]++--!~右new右*/左+左>>>>>左<><=左==左&左^左|左左左右=+=-=*=/=%=^=&=|=<<=>>=>>>=右a>=b&&c<d||((a<=b)&&(c<d))||結(jié)構(gòu)化程序設(shè)計(jì)的三種基本框架,如圖3-2所示。成成不成BA成(a)順序結(jié) (b)分支結(jié) (c)循環(huán)結(jié)3-2程序的三種流Java語(yǔ)言雖然是面向?qū)ο蟮恼Z(yǔ)言,但是在局部的語(yǔ)句塊內(nèi)部,仍然需要借助于結(jié)構(gòu)化程序設(shè)計(jì)的基本流程結(jié)構(gòu)來(lái)組織語(yǔ)句,完成相應(yīng)的邏輯功能。Java的語(yǔ)句塊是由一對(duì)大括號(hào)括起的若干語(yǔ)句的集合。Java中,有專門負(fù)責(zé)實(shí)現(xiàn)分支結(jié)構(gòu)的條件分支語(yǔ)句和負(fù)責(zé)實(shí)現(xiàn)簡(jiǎn)單(System.out.println(“oa=b=a>0?a:-s=d=Integer.parseInt(s分支支的switch語(yǔ)句。ifif語(yǔ)句的一般形if(條件表達(dá)式 //if分 //else分為真,則執(zhí)行if分支的語(yǔ)句塊,否則執(zhí)行else分支的語(yǔ)句塊。在編寫程序時(shí),也可以不書寫else分支。此時(shí),若條件表達(dá)式的取值為假,則繞過(guò)if分支直接執(zhí)行if語(yǔ)句后面的其他if(條件表達(dá)式語(yǔ)句塊 //if分if(a>0)b=a;elseb=-例3- LeapYear.java判斷閏年publicclasspublicstaticvoidmain(Stringargs[]){intyear=2003;if((year%4==0&&year%100!=0)||(year%400==0))System.out.println(year+"isaleapyear.");}}
System.out.println(year+"isnotaleap3-3判斷閏switch(表達(dá)式{case判斷值n:一系列語(yǔ)句n;break;default:一系列語(yǔ)句n+1}switch語(yǔ)句在執(zhí)行時(shí),首先計(jì)算表達(dá)式的值,這個(gè)值必須是整型或字符型,同時(shí)應(yīng)與各個(gè)case分支的判斷值的類型相一致。計(jì)算出表達(dá)式的值之后,將它先與第一個(gè)case分支式的值與第二個(gè)case分支相比較,??依此類推。如果表達(dá)式的值與任何一個(gè)case分支都不相同則轉(zhuǎn)而執(zhí)行最后default分支default分支不存在的情況則跳出整個(gè)switch語(yǔ)注意:switch語(yǔ)句的每一個(gè)case判斷,在一般情況下都有break語(yǔ)句,以指明這個(gè)分支執(zhí)行完成后,就跳出該switch語(yǔ)句。在某些特定的場(chǎng)合下可能不需要break例3- publicclasspublicstaticvoidmain(args[]){System.out.println("\n****firstsituation****");chargrade='C';//normaluseswitch(grade){case'A'System.out.println(grade+"is85~100");case'B'System.out.println(grade+"is70~84");case'C'System.out.println(grade+"is60~69");case'D'System.out.println(grade+"is<60");defaultSystem.out.println("input}}}例3- AutoScore.java自動(dòng)出題并判分如圖3-4所示。3-4自動(dòng)出題并判importjava.awt.*;publicclassAutoScoreextends{publicvoid{lblA.setFont(newFont("Dialog",Font. IN,24));lblOp.setFont(newFont("Dialog",Font. IN,24));lblB.setFont(newFont("Dialog",Font. IN,24));label5.setFont(newFont("Dialog",Font. IN,24));txtAnswer.setFont(newFont("Dialog",Font. IN,24));listDisp.setFont(newFont("Dialog",Font. IN,16));SymActionlSymAction=newSymAction();}java.awt.ButtonbtnNew=newjava.awt.Button();java.awt.Buttonbutton2=newjava.awt.Button();java.awt.LabellblA=newjava.awt.Label();java.awt.LabellblOp=newjava.awt.Label();java.awt.LabellblB=newjava.awt.Label();java.awt.Labellabel5=newjava.awt.Label();java.awt.TextFieldtxtAnswer=newjava.awt.TextField();java.awt.ListlistDisp=newjava.awt.List(0);classSymActionimplements{publicvoidactionPerformed(java.awt.event.ActionEvent{Objectobject=event.getSource();if(object==btnNew)elseif(object==button2)}}voidbtnNew_ActionPerformed(java.awt.event.ActionEvent{//todo:codegoesa=b=(int)(Math.random()*9+1);intc=(int)(Math.random()*4);switch(c){case0:op="+";result=a+b;break;case1:op="-";result=a-b;break;case2:op="*";result=a*b;break;case3:op="/";result=a/b;break;}}inta=0,b=0;Stringop="";voidbutton2_ActionPerformed(java.awt.event.ActionEvent{//todo:codegoesStringstr=doubled=Double.valueOf(str).doubleValue();Stringdisp=""+a+op+b+"="+str+"";if(d==result)disp+="☆";elsedisp+=listDisp.add(disp}publicstaticvoidmain(String[]{Framef=newFrame();f.setSize(400,300);AutoScorep=newAutoScore();f.add(p);f.setVisible(true);}}時(shí)的界面如圖3-4所示。3-10界面對(duì)象及其屬 輸入的 判分按判信息顯示列表注意:AppletLayoutnull一個(gè)隨機(jī)數(shù),然后根據(jù)這種數(shù)的大小得到一個(gè)符號(hào)(用switch語(yǔ)句實(shí)現(xiàn)。<TITLE>AutoSoce自動(dòng)出題并判分循環(huán)FTFTFT環(huán)體。循環(huán)結(jié)構(gòu)是程序中非常重要和基本的一種結(jié)構(gòu),它是由循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn)的。FTFTFT(a)for語(yǔ) (b)while語(yǔ) (c)do-while語(yǔ)3-5循環(huán)語(yǔ)循環(huán)例3- Sum100.java循環(huán)語(yǔ)句用于求1+2+3+?+100publicclasspublicstaticvoidmain(Stringargs[]){intsum,n;System.out.println("\n****forstatement****");forinti=1i<=100i }System.out.println("\n****whilestatement****"); whilen>0 n }System.out.println("\n****do_whilestatement****"); }whilen<=100 }}3-6運(yùn)行結(jié)forfor語(yǔ)句是Java語(yǔ)言三個(gè)循環(huán)語(yǔ)句能較強(qiáng)、使用較廣泛的一個(gè),它的流程結(jié)構(gòu)for(表達(dá)式12;表達(dá)式3用來(lái)修改循環(huán)變量,改變循環(huán)條件。3個(gè)表for語(yǔ)句的執(zhí)行過(guò)程是首先計(jì)算表達(dá)式1,完成必要的初始化工作;再判斷表達(dá)式2的值,若為真,則執(zhí)行循環(huán)體,執(zhí)行完循環(huán)體后再返回表達(dá)式3,計(jì)算并修改循環(huán)條件。這樣一輪循環(huán)就結(jié)束了。第二輪循環(huán)從計(jì)算并判斷表達(dá)式2開始,若表達(dá)式的值仍為真,則繼續(xù)循環(huán);否則,跳出整個(gè)for語(yǔ)句執(zhí)行下面的句子。for語(yǔ)句的三個(gè)表達(dá)式都可以為空,但若表達(dá)式2也為空,則表示當(dāng)前循環(huán)是一個(gè)無(wú)限循環(huán),需要在循環(huán)體中書寫另外的跳轉(zhuǎn)語(yǔ)句效。如for(intn=0;n<100;n++){System.out.println(n);}例3- importjava.awt.*;publicclassCircle99extends{publicvoidpaint(Graphics{g.drawString("circle99",20,intx0=getSize().width/2;inty0=getSize().height/2;for(intr=0;r<getSize().height/2;r+=3{g.setColor(getRandomColor());g.drawOval(x0-r,y0-r,r*2,r*2);}}Color{returnnew(int)(Math.random()*255(int)(Math.random()*255),(int)(Math.random()*255)}}<APPLETCODE="Circle99.class"WIDTH="300"
3-7Applet中畫很多同心while語(yǔ)句的一般語(yǔ)法格while(條件表達(dá)式執(zhí)行while語(yǔ)句后面的語(yǔ)句。例3- “角谷猜想”:將一個(gè)自然數(shù)按以下的一個(gè)簡(jiǎn)單規(guī)則進(jìn)行運(yùn)算:若數(shù)為偶
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 旅游行業(yè)行程變動(dòng)及責(zé)任豁免協(xié)議書
- 電子支付平臺(tái)開發(fā)與推廣合作協(xié)議
- 營(yíng)業(yè)辦公用房買賣協(xié)議書
- 中學(xué)生感恩教育故事觀后感
- 高考語(yǔ)文高頻文言實(shí)詞60詞表解
- 環(huán)保能源行業(yè)項(xiàng)目合作風(fēng)險(xiǎn)提示
- 高考語(yǔ)文備考之明朝作家文言文匯編(下)
- 購(gòu)銷家具合同家具購(gòu)銷合同
- 綠色農(nóng)業(yè)種植合同
- 裝修工程勞務(wù)外包合同
- 2022嗜酸粒細(xì)胞增多相關(guān)性肺疾病診療中國(guó)專家共識(shí)
- 《研學(xué)旅行課程設(shè)計(jì)》課件-初識(shí)研學(xué)旅行發(fā)展歷程
- 傳染病手術(shù)的處理流程
- 新質(zhì)生產(chǎn)力:中國(guó)創(chuàng)新發(fā)展的著力點(diǎn)與內(nèi)在邏輯
- 《中醫(yī)常用護(hù)理技術(shù)基礎(chǔ)》課件-八綱辨證施護(hù)
- 心理健康與職業(yè)生涯(中等職業(yè))全套教學(xué)課件
- 市政園林安全生產(chǎn)培訓(xùn)課件
- 基于BIM的軸流通風(fēng)機(jī)施工工藝優(yōu)化
- 2024年大學(xué)生自我意識(shí)教學(xué)案
- 女生青春期知識(shí)講座(六年級(jí))課件
- 化工過(guò)程安全管理導(dǎo)則
評(píng)論
0/150
提交評(píng)論