Java程序設(shè)計(jì)培訓(xùn)教程_第1頁(yè)
Java程序設(shè)計(jì)培訓(xùn)教程_第2頁(yè)
Java程序設(shè)計(jì)培訓(xùn)教程_第3頁(yè)
Java程序設(shè)計(jì)培訓(xùn)教程_第4頁(yè)
Java程序設(shè)計(jì)培訓(xùn)教程_第5頁(yè)
已閱讀5頁(yè),還剩392頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Java官方培訓(xùn)課程本書的主要目標(biāo)是為你提供有關(guān)Java應(yīng)用和Javaapplets的面向?qū)ο蟮某绦蛟O(shè)計(jì)所必需的知識(shí)和技能;并講授Java編程語(yǔ)言句法和面向?qū)ο蟮母拍睿约癑ava運(yùn)行環(huán)境的許多特性,對(duì)圖形用戶界面(GUIs)、多線程和網(wǎng)絡(luò)的支持等。本課程包括了參加SUNCertifiedJavaProgrammer和SUNCertifiedJavaDeveloper考試所必備的知識(shí)。一、課程概述課程概述本課程主要包括以下內(nèi)容:Java編程語(yǔ)言句法應(yīng)用于Java編程語(yǔ)言的面向?qū)ο蟮母拍顖D形用戶界面(GUI)編程創(chuàng)建Applet多線程網(wǎng)絡(luò)本課程首先討論了Java運(yùn)行環(huán)境和Java編程語(yǔ)言句法,然后闡述了應(yīng)用于Java編程語(yǔ)言的面向?qū)ο蟮母拍?;隨著課程的進(jìn)展還將討論有關(guān)Java平臺(tái)的更先進(jìn)的特性。本課程授課對(duì)象應(yīng)具備運(yùn)用Java編程語(yǔ)言或其它語(yǔ)言進(jìn)行基本語(yǔ)言設(shè)計(jì)的能力,它是“非程序員Java編程”(“JavaProgrammingforNon—Programmers”,SL-110)課程的延續(xù)。盡管Java編程語(yǔ)言獨(dú)立于操作系統(tǒng),但它所產(chǎn)生的圖形用戶界面(GUI)卻可能依賴于執(zhí)行其代碼的操作系統(tǒng)。本課程中的例題所使用的代碼運(yùn)行于SolarisTM操作系統(tǒng),因而本手冊(cè)中的圖形具備MotifGUI。如果將這些代碼運(yùn)行于Windows95操作系統(tǒng),則可產(chǎn)生MicrosoftWindows95GUI。本課程的內(nèi)容適用于所有Java操作系統(tǒng)端口。二、課程圖每一模塊的課程都從一張課程圖開始,使學(xué)員可掌握自己的學(xué)習(xí)進(jìn)度。全課程設(shè)置流程圖如下所示:三、各模塊概述各模塊概述模塊1──起步模塊2──標(biāo)識(shí)符、關(guān)鍵字和類型模塊3──表達(dá)式和流程控制模塊4──數(shù)組模塊5──對(duì)象和類模塊6──高級(jí)語(yǔ)言特性模塊7──異常模塊8──建立GUIs模塊9──AWT事件模型模塊10──AWT組件庫(kù)模塊11──Java基礎(chǔ)類模塊12──JavaApplets介紹模塊13──線程模塊14──流式I/O和文件模塊15──網(wǎng)絡(luò)模塊1──起步本模塊概述了Java編程語(yǔ)言的主要特性及Java應(yīng)用程序,闡述了類和包的概念,并介紹了一些常用Java包。模塊2──標(biāo)識(shí)符、關(guān)鍵字和類型Java編程語(yǔ)言及C語(yǔ)言類似,具有許多編程構(gòu)造。本模塊對(duì)這些構(gòu)造作了一般介紹并講授了每一構(gòu)造所要求的一般句法。此外,還介紹了采用集合數(shù)據(jù)類型進(jìn)行數(shù)據(jù)關(guān)聯(lián)的面向?qū)ο蟮姆椒āDK3──表達(dá)式和流程控制本模塊介紹了包括運(yùn)算符和Java程序控制句法在內(nèi)的表達(dá)式。模塊4──數(shù)組本模塊講解了如何聲明、創(chuàng)建、初始化和拷貝Java數(shù)組。模塊5──對(duì)象和類本模塊是在模塊2的基礎(chǔ)上,對(duì)Java對(duì)象的概念作了進(jìn)一步的闡述,包括重載、覆蓋、子類和構(gòu)造函數(shù)。模塊6──高級(jí)語(yǔ)言特性本模塊是模塊5的繼續(xù),它進(jìn)一步講解了Java面向?qū)ο蟮木幊棠K,包括一些新的JDK1.1特性──降級(jí)和內(nèi)部類。該模塊還介紹了在Java開發(fā)包JDKTM1.2中新增的收集的概念。模塊7──異常本模塊為Java程序員提供了一種在運(yùn)行Java程序時(shí)俘獲錯(cuò)誤的機(jī)制,并闡述了預(yù)定義異常和用戶定義異常。模塊8──建立GUIs在Java編程語(yǔ)言中,所有圖形用戶界面都是建立在框架和面板的概念之上。本模塊介紹了布局管理和容器的概念。模塊9──AWT事件模型Java編程語(yǔ)言1.1版的最重要的變化就是將事件送入和送出Java組件的方法的變化。本模塊闡述了JDK1.0和1.1的事件模型的區(qū)別,并演示了如何建立小型事件柄(compacteventhandler)的方法。模塊10──AWT組件庫(kù)本模塊介紹了用于建立JavaGUIs的抽象窗口工具包(AWT)組件,并演示了JavaAWT組件和1.1事件模型共同工作的方法。模塊11──Java基礎(chǔ)類介紹本模塊重點(diǎn)介紹了JDK1.2的一個(gè)重要特性──Java基礎(chǔ)類(JFC),闡述了Swing組件和它們的可插入式外觀及感覺的體系結(jié)構(gòu),并介紹了一例基本的Swing應(yīng)用及JFC的其它特點(diǎn),例如在二維圖形、存取性及拖放(Draganddrop)等方面的應(yīng)用。模塊12──JavaApplets介紹本模塊演示了applet和應(yīng)用程序開發(fā)之間的區(qū)別,并介紹了JDK1.2的聲音增強(qiáng)功能.模塊13──線程線程是一個(gè)復(fù)雜的論題。本模塊闡述了及Java編程語(yǔ)言相關(guān)的線程問題,并介紹了一個(gè)簡(jiǎn)單的線程通信和同步傳輸實(shí)例。模塊14──流式I/O和文件本模塊闡述了既可讀寫數(shù)據(jù)又可讀寫文本文件的類,并介紹了對(duì)象流的概念。模塊15──網(wǎng)絡(luò)本模塊介紹了Java網(wǎng)絡(luò)編程包并演示了傳輸控制協(xié)議/Internet協(xié)議(TCP/IP)客戶──服務(wù)器模型。四、課程目標(biāo)完成本課程的學(xué)習(xí)后,你應(yīng)該能夠:描述語(yǔ)言的主要特性編譯并運(yùn)行Java應(yīng)用程序理解和使用在線超文本Java技術(shù)文件描述語(yǔ)言句法元素和構(gòu)造理解面向?qū)ο蟮睦硬⑹褂迷撜Z(yǔ)言的面向?qū)ο筇匦岳斫獠⑹褂卯惓i_發(fā)圖形用戶界面描述Java技術(shù)平臺(tái)上的用于建立GUIs的抽象窗口工具包從GUI輸入理解事件處理描述Swing的主要特性開發(fā)Javaapplets讀寫文件和其它數(shù)據(jù)源在不使用GUI的情況下,對(duì)所有數(shù)據(jù)源執(zhí)行輸入輸出理解多線程基礎(chǔ)開發(fā)多線程Java應(yīng)用程序和applets使用TCP/IP和用戶數(shù)據(jù)報(bào)協(xié)議(UDP)開發(fā)客戶和服務(wù)器程序五、從各模塊中所獲得的技能下表的左側(cè)顯示有關(guān)的Java應(yīng)用程序編程技能,右側(cè)的黑格表示出講解其左側(cè)相應(yīng)技能的有關(guān)模塊,而灰格則表示簡(jiǎn)述其左側(cè)相應(yīng)技能的有關(guān)模塊。ModuleSkillsGained123456789101112131415DescribeKeylanguagefeaturesCompileandrunaJavaapplicationUnderstandandusetheonlinehypertextJavatechnologydocumentationDescribelanguagesyntacticelementsandconstructsUnderstandtheobject-orientedparadigmanduseobject-orientedfeaturesUnderstandanduseexceptionsDevelopaGUIDescribetheJavatechnologyplatform’sAbstractWindowToolkitfromwhichGUIsarebuiltTakeinputfromagraphicaluserinterfaceUnderstandeventhandlingDescribethemainfeaturesofSwingDevelopJavaappletsUnderstandthebasicsofmultithreadingDevelopmultithreadedJavaapplicationsandappletsPerformI/OtoallsourceswithouttheuseofaGUIReadandwritetofilesandotherdatasourcesDevelopJavaclientandserverprogramsusingTCP/IPandUDP六、課時(shí)安排下表給出了大致的課程進(jìn)度ModuleDayDayDayDayDay12345AboutThisCourseA.M.Module1-GettingStartedA.M.Module2-Identifiers,Keywords,andTypesA.M.Module3-ExpressionsandFlowControlP.M.Module4-ArraysP.M.Module5-ObjectsandClassesA.M.Module6-AdvancedLanguageFeaturesP.M.Module7-ExceptionsA.M.Module8-BuildingGUIsA.M.Module9-TheAWTEventModelP.M.Module10-TheAWTComponentLibraryA.M.Module11-IntroductiontoJFCA.M.Module12-IntroductiontoAppletsP.M.Module13-ThreadsA.M.Module14-StreamI/OandFilesP.M.Module15-NetworkingP.M.七、未包括的論題未包括的論題一般編程概念。本課程不是為從未參及過編程的人員而設(shè)置。一般面向?qū)ο蟾拍睢1菊n程未包括的論題見上表,由SUNEducationalServices(SES)提供的其它課程包括了上述論題。面向?qū)ο蟮母拍瞟ぉひ奜O-100:面向?qū)ο蟮募夹g(shù)和概念面向?qū)ο蟮脑O(shè)計(jì)和分析──見OO-120面向?qū)ο蟮脑O(shè)計(jì)和分析一般編程概念──見SL-110:非程序員Java編程八、如何做好準(zhǔn)備?如何做好準(zhǔn)備?在學(xué)習(xí)本課程前,你應(yīng)該已經(jīng)完成了下列內(nèi)容的學(xué)習(xí):SL-110非程序員Java編程用C或C++創(chuàng)建編譯程序用文本編輯器創(chuàng)建并編輯文本文件使用WorldWideWeb(WWW)瀏覽器,如NetscapeNavigatorTM在學(xué)習(xí)本課程前,你應(yīng)該已經(jīng)完成了下列內(nèi)容的學(xué)習(xí):SL-110非程序員Java編程或能夠:用C或C++創(chuàng)建編譯程序用文本編輯器創(chuàng)建并編輯文本文件使用WorldWideWeb(WWW)瀏覽器,如NetscapeNavigatorTM九、自我介紹:自我介紹姓名公司職務(wù)、職責(zé)編程經(jīng)歷參及本課程學(xué)習(xí)的原因?qū)Ρ菊n程的預(yù)期現(xiàn)在你已經(jīng)進(jìn)入本課程的學(xué)習(xí),請(qǐng)互相介紹并填寫上面的表格。十、如何使用本教材如何使用本教材課程圖相關(guān)問題頁(yè)頭圖教程練習(xí)檢查你的進(jìn)度思考題為使你學(xué)好本課程,本教材采用了包括下列主要項(xiàng)目的授課模式:課程圖──每一模塊都從內(nèi)容概述開始,這樣你就可以了解該模塊在實(shí)現(xiàn)整個(gè)課程目標(biāo)中所起的作用。相關(guān)問題──每一模塊的相關(guān)問題部分提供給你一些有關(guān)該模塊的問題供學(xué)習(xí)者之間進(jìn)行討論,并鼓勵(lì)你思考在Java應(yīng)用程序編程過程中你的興趣及該模塊內(nèi)容的關(guān)系頁(yè)頭圖──頁(yè)頭圖可幫助你及時(shí)而輕松的跟上教師的進(jìn)度。它并不是在每一頁(yè)都出現(xiàn)教程──教師將為你提供有關(guān)模塊的特有信息,這些信息將有助于你掌握做練習(xí)所需要的知識(shí)和技能練習(xí)──練習(xí)將為你提供測(cè)試你的技能和應(yīng)用所學(xué)概念的機(jī)會(huì)。本教程中所提供的例題代碼亦有助于你完成練習(xí)。檢查你的進(jìn)度──在這一部分,模塊的目標(biāo)被重新提及,有時(shí)是以問題形式出現(xiàn)。這樣,在你進(jìn)入下一模塊之前,就可以檢查你是否已完成了目前這一模塊所要求達(dá)到的目標(biāo)。思考題──具有挑戰(zhàn)性的問題有助于你應(yīng)用所學(xué)模塊內(nèi)容或預(yù)測(cè)待學(xué)模塊的內(nèi)容。十一、圖表和印刷體例說(shuō)明下列圖表及印刷體例代表著不同的含義:輔助資源──表示可獲取輔助參考資料。討論──表示此時(shí)建議以小組或班級(jí)形式進(jìn)行討論。練習(xí)目標(biāo)──表示練習(xí)的目標(biāo),這個(gè)練習(xí)適合于正在討論的內(nèi)容。注意──附加重要信息、強(qiáng)調(diào)信息、有趣或特殊信息警告──對(duì)數(shù)據(jù)或機(jī)器的潛在損壞印刷體例字體Courier系用來(lái)表示命令名稱、文件名及目錄名,同時(shí)也表示計(jì)算機(jī)屏幕輸出。例如:Usels–altoallfiles.System%Youhavemail黑體courierbold系用來(lái)表示你打印的字符和數(shù)字。例如:system%suPassword:斜體courieritalic系用來(lái)表示變量和命令行,它可以被實(shí)際名稱或值所代替。例如:Todeleteafile,typerm.斜體Palatino系用來(lái)表示書名、新詞或術(shù)語(yǔ)或需強(qiáng)調(diào)的詞。例如:ReadChapter6inUser’sGuide.ThesearecalledclassoptionsYoumustberoottodothis.起步本模塊對(duì)Java編程語(yǔ)言做了一般性描述,包括Java虛擬機(jī)、垃圾收集和安全性等。相關(guān)問題討論──下列問題及本模塊相關(guān)Java編程語(yǔ)言是一種完整的語(yǔ)言嗎?它是不是僅用于編寫Web程序?你為什么需要另一種編程語(yǔ)言?Java平臺(tái)是如何在其它語(yǔ)言平臺(tái)上提高性能的?目標(biāo)完成本模塊的學(xué)習(xí)后,你應(yīng)該能夠:描述Java編程語(yǔ)言的主要特性描述Java虛擬機(jī)的主要功能描述垃圾收集是如何進(jìn)行的列舉由處理代碼安全性的Java平臺(tái)所執(zhí)行的三大任務(wù)定義Class,Package,Applets和Applications編寫、編譯并運(yùn)行簡(jiǎn)單Java應(yīng)用程序利用Java技術(shù)應(yīng)用程序編程界面(API)的在線文檔來(lái)標(biāo)識(shí)Java.lang包的方法。參考資料輔助資源──下列參考資料可為本模塊所討論的問題提供更詳細(xì)的補(bǔ)充LindholmandYellin.1997.TheJavaVirtualMachineSpecification.Addison-Wesley.Yellin,Frank.Low-LevelSecurityinJava,whitepaper.[Online].Available:.什么是Java編程語(yǔ)言?什么是Java編程語(yǔ)言Java是:一種編程語(yǔ)言一種開發(fā)環(huán)境一種應(yīng)用環(huán)境一種部署環(huán)境句法及C++相似,語(yǔ)義及SmallTalk相似用來(lái)開發(fā)applets,又用來(lái)開發(fā)applicationsJava是:一種編程語(yǔ)言一種開發(fā)環(huán)境一種應(yīng)用環(huán)境一種部署環(huán)境Java編程語(yǔ)言的句法及C++的句法相似,語(yǔ)義則及SmallTalkTM的語(yǔ)義相似。Java編程語(yǔ)言可被用來(lái)創(chuàng)建任何常規(guī)編程語(yǔ)言所能創(chuàng)建的應(yīng)用程序。在WorldWideWeb(WWW)和能夠運(yùn)行稱為applets程序的瀏覽器的有關(guān)介紹中,人們經(jīng)常提及Java編程語(yǔ)言。Applets是一種貯存于WWW服務(wù)器的用Java編程語(yǔ)言編寫的程序,它通常由瀏覽器下載到客戶系統(tǒng)中,并通過瀏覽器運(yùn)行。Applets通常較小,以減少下載時(shí)間,它由超文本標(biāo)識(shí)語(yǔ)言(HTML)的Web頁(yè)來(lái)調(diào)用。Javaapplications是一種獨(dú)立的程序,它不需要任何Web瀏覽器來(lái)執(zhí)行。它們是一種典型的通用程序;可運(yùn)行于任何具備Java運(yùn)行環(huán)境的設(shè)備中。1.3.1Java編程語(yǔ)言的主要目標(biāo)Java編程語(yǔ)言的主要目標(biāo)提供一種解釋環(huán)境為提高開發(fā)速度代碼可移植性使用戶能運(yùn)行不止一個(gè)活動(dòng)線程當(dāng)程序運(yùn)行時(shí),能動(dòng)態(tài)支持程序改變提供更好的安全性設(shè)計(jì)Java編程語(yǔ)言的主要目標(biāo)是提供一種易于編程的語(yǔ)言,從而消除其它語(yǔ)言在諸如指針運(yùn)算和存儲(chǔ)器管理方面影響健壯性的缺陷。利用面向?qū)ο蟮母拍钍钩绦蛘嬲爻蔀榭梢暬绦驗(yàn)槭勾a盡可能清晰合理、簡(jiǎn)明流暢提供了一種方法Java編程語(yǔ)言的主要目標(biāo)設(shè)計(jì)Java編程語(yǔ)言的主要目標(biāo)是提供一種易于編程的語(yǔ)言消除其它語(yǔ)言在諸如指針運(yùn)算和存儲(chǔ)器管理方面影響健壯性的缺陷。利用面向?qū)ο蟮母拍钍钩绦蛘嬲爻蔀榭梢暬绦驗(yàn)槭勾a盡可能清晰合理、簡(jiǎn)明流暢提供了一種方法Java編程語(yǔ)言的主要目標(biāo)(續(xù))為獲得如下兩點(diǎn)益處提供一種解釋環(huán)境提高開發(fā)速度──消除編譯─鏈接—裝載—測(cè)試周期。代碼可移植性──使操作系統(tǒng)能為運(yùn)行環(huán)境做系統(tǒng)級(jí)調(diào)用為運(yùn)行不止一個(gè)活動(dòng)線程的程序提供了一種方式通過允許下載代碼模塊,從而當(dāng)程序運(yùn)行時(shí)也能動(dòng)態(tài)支持程序改變。為那些保證安全性而裝載的代碼模塊提供了一種檢查方法。Java編程語(yǔ)言的主要目標(biāo)下列特性使這些目標(biāo)付諸實(shí)現(xiàn):Java虛擬機(jī)(JVM)垃圾收集代碼安全性Java編程語(yǔ)言的主要目標(biāo)(續(xù))精心開發(fā)的Java技術(shù)體系結(jié)構(gòu)為上述目標(biāo)的實(shí)現(xiàn)提供了保證。Java的如下特性使這些目標(biāo)得以實(shí)現(xiàn)Java虛擬機(jī)垃圾收集代碼安全性1.3.2Java虛擬機(jī)Java虛擬機(jī)提供硬件平臺(tái)規(guī)范解讀獨(dú)立于平臺(tái)的已編譯的字節(jié)碼可當(dāng)作軟件或硬件來(lái)實(shí)現(xiàn)可在Java技術(shù)開發(fā)工具或Web瀏覽器上實(shí)現(xiàn)Java虛擬機(jī)規(guī)范為Java虛擬機(jī)(JVM)作了如下定義:在真實(shí)機(jī)器中用軟件模擬實(shí)現(xiàn)的一種想象機(jī)器。Java虛擬機(jī)代碼被存儲(chǔ)在.class文件中;每個(gè)文件都包含最多一個(gè)public類。Java虛擬機(jī)規(guī)范為不同的硬件平臺(tái)提供了一種編譯Java技術(shù)代碼的規(guī)范,該規(guī)范使Java軟件獨(dú)立于平臺(tái),因?yàn)榫幾g是針對(duì)作為虛擬機(jī)的“一般機(jī)器”而做,這個(gè)“一般機(jī)器”可用軟件模擬并運(yùn)行于各種現(xiàn)存的計(jì)算機(jī)系統(tǒng),也可用硬件來(lái)實(shí)現(xiàn)。Java虛擬機(jī)JVM為下列各項(xiàng)做出了定義指令集(中央處理器[CPU])注冊(cè)集類文件格式棧垃圾收集堆存儲(chǔ)區(qū)Java虛擬機(jī)(續(xù))編譯器在獲取Java應(yīng)用程序的源代碼后,將其生成字節(jié)碼,它是為JVM生成的一種機(jī)器碼指令。每個(gè)Java解釋器,不管它是Java技術(shù)開發(fā)工具,還是可運(yùn)行applets的Web瀏覽器,都可執(zhí)行JVM。JVM為下列各項(xiàng)做出了定義指令集(相當(dāng)于中央處理器[CPU])注冊(cè)集類文件格式棧垃圾收集堆存儲(chǔ)區(qū)Java虛擬機(jī)由保持適當(dāng)類型約束的字節(jié)碼形成代碼大部分類型檢查在編譯代碼時(shí)完成每個(gè)由SUNTM批準(zhǔn)的JVM必須能夠運(yùn)行任何從屬類文件Java虛擬機(jī)(續(xù))JVM的代碼格式由緊縮有效的字節(jié)碼構(gòu)成。由JVM字節(jié)碼編寫的程序必須保持適當(dāng)?shù)念愋图s束。大部分類型檢查是在編譯時(shí)完成。任何從屬的Java技術(shù)解釋器必須能夠運(yùn)行任何含有類文件的程序,這些類文件應(yīng)符合Java虛擬機(jī)規(guī)范中所指定的類文件格式。1.3.3垃圾收集垃圾收集垃圾收集不再需要的分配存儲(chǔ)器應(yīng)取消分配在其它語(yǔ)言中,取消分配是程序員的責(zé)任Java編程語(yǔ)言提供了一種系統(tǒng)級(jí)線程以跟蹤存儲(chǔ)區(qū)分配垃圾收集可檢查和釋放不再需要的存儲(chǔ)器可自動(dòng)完成上述工作可在JVM實(shí)現(xiàn)周期中,產(chǎn)生意想不到的變化許多編程語(yǔ)言都允許在程序運(yùn)行時(shí)動(dòng)態(tài)分配存儲(chǔ)器,分配存儲(chǔ)器的過程由于語(yǔ)言句法不同而有所變化,但總是要將指針返回到存儲(chǔ)區(qū)的起始位置當(dāng)分配存儲(chǔ)器不再需要時(shí)(存儲(chǔ)器指針已溢出范圍),程序或運(yùn)行環(huán)境應(yīng)取消分配存儲(chǔ)器。在C,C++或其它語(yǔ)言中,程序員負(fù)責(zé)取消分配存儲(chǔ)器。有時(shí),這是一件很困難的事情。因?yàn)槟悴⒉豢偸鞘孪戎来鎯?chǔ)器應(yīng)在何時(shí)被釋放。當(dāng)在系統(tǒng)中沒有能夠被分配的存儲(chǔ)器時(shí),可導(dǎo)致程序癱瘓,這種程序被稱作具有存儲(chǔ)器漏洞。Java編程語(yǔ)言解除了程序員取消分配存儲(chǔ)器的責(zé)任,它可提供一種系統(tǒng)級(jí)線程以跟蹤每一存儲(chǔ)器的分配情況。在Java虛擬機(jī)的空閑周期,垃圾收集線程檢查并釋放那些可被釋放的存儲(chǔ)器。垃圾收集在Java技術(shù)程序的生命周期中自動(dòng)進(jìn)行,它解除了取消分配存儲(chǔ)器的要求,并避免了存儲(chǔ)器漏洞。然而,垃圾收集可在JVM實(shí)現(xiàn)的周期中,產(chǎn)生意想不到的變化。1.3.4代碼的安全性概述下圖顯示了Java技術(shù)的運(yùn)行環(huán)境及其加強(qiáng)代碼安全性的方法。Java源程序文件通過“編譯”,在你的感覺中,就好象是將它們從程序員編寫的文本文件格式轉(zhuǎn)換成了一組字節(jié)碼。字節(jié)碼被存儲(chǔ)在.class文件中。構(gòu)成Java軟件程序的字節(jié)碼在運(yùn)行時(shí)被加載、校驗(yàn)并在解釋器中運(yùn)行。當(dāng)運(yùn)行applets時(shí),字節(jié)碼可被下載,然后由建于瀏覽器中的JVM進(jìn)行解釋。解釋器具備兩種功能,一是執(zhí)行字節(jié)碼,二是對(duì)底層硬件做適當(dāng)調(diào)用。在一些使用Java技術(shù)的運(yùn)行環(huán)境中,部分校驗(yàn)過的字節(jié)碼被編譯成原始機(jī)器碼并直接運(yùn)行于硬件平臺(tái)。這就使Java軟件代碼能夠以C或C++接近的速度運(yùn)行,只是在加載時(shí),因?yàn)橐幾g成原始機(jī)器碼而略有延遲。注意--SUNMicrosystemsTM通過采用新的技術(shù),使Java虛擬機(jī)的性能已經(jīng)有了進(jìn)一步的提高。這種新型虛擬機(jī)被稱為HotSpotTM虛擬機(jī),它具備了使Java編程語(yǔ)言能象編譯C++一樣快速運(yùn)行的潛力。HotSpot虛擬機(jī)對(duì)操作系統(tǒng)具有本地多線程支持能力,而不是虛擬多線程。因而,HotSpot虛擬機(jī)可保證對(duì)一個(gè)應(yīng)用程序來(lái)說(shuō),并不一定有代碼才能使用這一能力。HotSpot技術(shù)解決了性能及移植性之間的難題。JavaJava運(yùn)行環(huán)境執(zhí)行三大任務(wù)加載代碼校驗(yàn)代碼執(zhí)行代碼代碼安全性(續(xù))Java運(yùn)行環(huán)境一個(gè)Java技術(shù)的運(yùn)行環(huán)境可運(yùn)行為JVM編譯的代碼并執(zhí)行如下三大任務(wù):加載代碼-由類加載器執(zhí)行校驗(yàn)代碼-由字節(jié)碼校驗(yàn)器執(zhí)行執(zhí)行代碼-由運(yùn)行時(shí)的解釋器執(zhí)行類加載器類加載器為程序的執(zhí)行加載所需要的全部類。類加載器將局部文件系統(tǒng)的類名空間及來(lái)自網(wǎng)絡(luò)源的類名空間相分離,以增加安全性。由于局部類總是首先加載,因而可限制任何“特洛依木馬”的應(yīng)用。當(dāng)全部類被加載后,可執(zhí)行文件的存儲(chǔ)器格式被確定。這時(shí),特定的存儲(chǔ)器地址被分配給符號(hào)引用并創(chuàng)建檢索表格。由于存儲(chǔ)器格式在運(yùn)行時(shí)出現(xiàn),因而Java技術(shù)解釋器增加了保護(hù)以防止對(duì)限制代碼區(qū)的非法進(jìn)入。字節(jié)碼校驗(yàn)可保證代碼符合JVM規(guī)范代碼不破壞系統(tǒng)完整性代碼不會(huì)引起操作數(shù)棧上溢或下溢所有操作代碼的參數(shù)類型的準(zhǔn)確性無(wú)非法數(shù)據(jù)轉(zhuǎn)換(整數(shù)到指針的轉(zhuǎn)換)代碼安全性(續(xù))字節(jié)碼校驗(yàn)器Java軟件代碼在實(shí)際運(yùn)行之前要經(jīng)過幾次測(cè)試。JVM將代碼輸入一個(gè)字節(jié)碼校驗(yàn)器以測(cè)試代碼段格式并進(jìn)行規(guī)則檢查--檢查偽造指針、違反對(duì)象訪問權(quán)限或試圖改變對(duì)象類型的非法代碼。注意所有源于網(wǎng)絡(luò)的類文件都要經(jīng)過字節(jié)碼校驗(yàn)器代碼安全性(續(xù))校驗(yàn)過程字節(jié)碼校驗(yàn)器對(duì)程序代碼進(jìn)行四遍校驗(yàn),這可以保證代碼符合JVM規(guī)范并且不破壞系統(tǒng)的完整性。如果校驗(yàn)器在完成四遍校驗(yàn)后未返回出錯(cuò)信息,則下列各點(diǎn)可被保證:類符合JVM規(guī)范的類文件格式無(wú)訪問限制違例代碼未引起操作數(shù)棧上溢或下溢所有操作代碼的參數(shù)類型將總是正確的無(wú)非法數(shù)據(jù)轉(zhuǎn)換發(fā)生,如將整數(shù)轉(zhuǎn)換為對(duì)象引用對(duì)象域訪問是合法的一個(gè)基本的Java應(yīng)用程序象其它編程語(yǔ)言一樣,Java編程語(yǔ)言也被用來(lái)創(chuàng)建應(yīng)用程序。一個(gè)共同的小應(yīng)用程序范例是在屏幕上顯示字串“HelloWorld!”。下列代碼給出了這個(gè)Java應(yīng)用程序。1.4.1HelloWorldApp1.//2.//SampleHelloWorldapplication3.//4.publicclassHelloWorldApp{5.publicstaticvoidmain(Stringargs[]){6.System.out.println("HelloWorld!");7.}8.}以上程序行是在你的屏幕上打印“HelloWorld!”所需的最少組件。1.4.2描述HelloWorldApp第1-3行程序中的1-3行是注釋行1//2//SampleHelloWorldapplication3//第4行第4行聲明類名為HelloWorldApp。類名(Classname)是在源文件中指明的,它可在及源代碼相同的目錄上創(chuàng)建一個(gè)classname·class文件。在本例題中,編譯器創(chuàng)建了一個(gè)稱為HelloWorldApp.class的文件,它包含了公共類HelloWorldApp的編譯代碼。4publicclassHelloWorldApp{第5行第5行是程序執(zhí)行的起始點(diǎn)。Java技術(shù)解釋器必須發(fā)現(xiàn)這一嚴(yán)格定義的點(diǎn),否則將拒絕運(yùn)行程序。其它程序語(yǔ)言(特別是C和C++)也采用main()聲明作為程序執(zhí)行的起始點(diǎn)。此聲明的不同部分將在本課程的后幾部分介紹。如果在程序的命令行中給出了任何自變量,它們將被傳遞給main()方法中被稱作args的String數(shù)組。在本例題中,未使用自變量。5publicstaticvoidmain(Stringargs[]){public-方法main()可被任何程序訪問,包括Java技術(shù)解釋器。static-是一個(gè)告知編譯器main()是用于類HelloWorldApp中的函數(shù)的關(guān)鍵字。為使main()在程序做其它事之前就開始運(yùn)行,這一關(guān)鍵字是必要的。void-表明main()不返回任何信息。這一點(diǎn)是重要的,因?yàn)镴ava編程語(yǔ)言要進(jìn)行謹(jǐn)慎的類型檢查,包括檢查調(diào)用的方法確實(shí)返回了這些方法所聲明的類型。Stringargs-是一個(gè)String數(shù)組的聲明,它將包含位于類名之后的命令行中的自變量。javaHelloWorldAppargs[0]args[1]····第6行第6行聲明如何使用類名、對(duì)象名和方法調(diào)用。它使用由System類的out成員引用的PrintStreamout對(duì)象的println()方法,將字串“HelloWorld!”打印到標(biāo)準(zhǔn)輸出上。6System.out.println(“HelloWorld!”);在這個(gè)例子中,println()方法被輸入了一個(gè)字串自變量并將其寫在了標(biāo)準(zhǔn)輸出流上。第7-8行本程序的7-8行分別是方法main()和類HelloWorldApp的下括號(hào)。7}8}1.4.3編譯并運(yùn)行HelloWorldApp編譯并運(yùn)行HelloWorldApp編譯HelloWorldApp.javajavacHelloworldApp.java運(yùn)行應(yīng)用程序javaHelloWorldApp判定編譯和運(yùn)行的共同錯(cuò)誤編譯當(dāng)你創(chuàng)建了HelloWorldApp.java源文件后,用下列程序行進(jìn)行編譯:c:\student\javacHelloWorldApp.java如果編譯器未返回任何提示信息,新文件HelloWorldApp.class則被存儲(chǔ)在及源文件相同的目錄中,除非另有指定。如果在編譯中遇到問題,請(qǐng)參閱本模塊的查錯(cuò)提示信息部分。運(yùn)行為運(yùn)行你的HelloWorldApp應(yīng)用程序,需使用Java解釋器和位于bin目錄下的java:c:\student\javaHelloWorldAppHelloWorld!注意-必須設(shè)置PATH環(huán)境變量以發(fā)現(xiàn)java和javac,確認(rèn)它包括c:\jdk1.2\bin1.4.4編譯查錯(cuò)編譯時(shí)的錯(cuò)誤以下是編譯時(shí)的常見錯(cuò)誤javac:CommandnotfoundPATH變量未正確設(shè)置以包括javac編譯器。javac編譯器位于JDK目錄下的bin目錄。HelloWorldApp.java:6:Methodprintl(java.lang.String)notfoundinclassjava.io.PrintStream.System.out.printl("HelloWorld!");方法名println出現(xiàn)打印錯(cuò)誤。InclassHelloWorldApp:mainmustbepublicorstatic該錯(cuò)誤的出現(xiàn)是因?yàn)樵~static或public被放在了包含main方法的行之外。運(yùn)行時(shí)的錯(cuò)誤can’tfindclassHelloWorldApp(這個(gè)錯(cuò)誤是在打印javaHelloWorldApp時(shí)產(chǎn)生的)通常,它表示在命令行中所指定的類名的拼寫及文件的拼寫不同。Java編程語(yǔ)言是一種大小寫區(qū)別對(duì)待的語(yǔ)言。例如:publicclassHelloWorldapp創(chuàng)建了一個(gè)HellloWorldapp.class,它不是編譯器所預(yù)期的類名(HelloWorldApp.class)。命名如果·java文件包括一個(gè)公共類,則它必須使用及那個(gè)公共類相同的文件名。例如在前例中的類的定義是publicclassHelloWorldapp源文件名則必須是HelloWorldapp.java類計(jì)數(shù)在源文件中每次只能定義一個(gè)公共類。源文件布局源文件布局包含三個(gè)“頂級(jí)”要素一個(gè)可選擇的包聲明任意數(shù)量的輸入語(yǔ)句類和界面聲明一個(gè)Java源文件可包含三個(gè)“頂級(jí)”要素:一個(gè)包聲明(可選)任意數(shù)量的輸入語(yǔ)句類和界面聲明該三要素必須以上述順序出現(xiàn)。即,任何輸入語(yǔ)句出現(xiàn)在所有類定義之前;如果使用包聲明,則包聲明必須出現(xiàn)在類和輸入語(yǔ)句之前。類和包介紹類和包介紹什么是類和包?Java類庫(kù)中的幾個(gè)重要包java.iojava.util類是描述提供某種功能的模塊的一般術(shù)語(yǔ)。Java開發(fā)集(JDK)給出了一套標(biāo)準(zhǔn)的類(稱作類庫(kù)),這些類可執(zhí)行大部分所需的基本行為不僅為編程任務(wù)(例如,類可提供基本的數(shù)學(xué)函數(shù)、數(shù)組和字符串),而且為圖形和網(wǎng)絡(luò)。類庫(kù)被組織成許多包,每個(gè)包都包含幾個(gè)類。如下所列為一些重要的包:java.lang包含一些形成語(yǔ)言核心的類,如String、Math、Integer和Thread。java.awt包含了構(gòu)成抽象窗口工具包(AWT)的類,這個(gè)包被用來(lái)構(gòu)建和管理應(yīng)用程序的圖形用戶界面。java.applet包含了可執(zhí)行applet特殊行為的類。包含執(zhí)行及網(wǎng)絡(luò)相關(guān)的操作的類和處理接口及統(tǒng)一資源定位器(URLs)的類。java.io包含處理I/O文件的類。java.util包含為任務(wù)設(shè)置的實(shí)用程序類,如隨機(jī)數(shù)發(fā)生、定義系統(tǒng)特性和使用及日期日歷相關(guān)的函數(shù)。使用JavaAPI文檔使用JavaAPI文檔一組超文本標(biāo)識(shí)語(yǔ)言(HTML)文件提供了有關(guān)API的信息一個(gè)包包含了對(duì)所有類信息的超鏈接一個(gè)類文檔包括類層次、一個(gè)類描述、一組成員變量和構(gòu)造函數(shù)等一組HTML文件以文檔的形式提供了有關(guān)API的信息,這個(gè)文檔的布局是等級(jí)制的,因而主頁(yè)列出所有的包為超鏈接。如果選中了一個(gè)特殊包的熱鏈接,作為那個(gè)包成員的類將被列出。從一個(gè)包頁(yè)選中一個(gè)類的熱鏈接將提交一頁(yè)有關(guān)那個(gè)類的信息。圖1-1顯示了這樣一個(gè)類文檔圖1-1一個(gè)類文檔的主要部分包括:類層次類和類的一般目的描述成員變量列表構(gòu)造函數(shù)列表方法列表變量詳細(xì)列表及目的和用途的描述構(gòu)造函數(shù)詳細(xì)列表及描述方法詳細(xì)列表及描述練習(xí):基本任務(wù)練習(xí)目標(biāo)--在本練習(xí)里,你將利用JavaAPI文檔練習(xí)如何識(shí)別包、類和方法并練習(xí)標(biāo)準(zhǔn)輸入輸出方法。你還將編寫、編譯和運(yùn)行兩個(gè)簡(jiǎn)單的使用這些方法的應(yīng)用程序。一、準(zhǔn)備理解本模塊中提出的概念和術(shù)語(yǔ)對(duì)理解文件和運(yùn)用文件信息編寫程序至關(guān)重要。二、任務(wù)1級(jí):閱讀文件你的老師將指導(dǎo)你如何啟動(dòng)API瀏覽器并打開JavaAPI在線文檔的索引頁(yè)。找到j(luò)ava.lang包在此包中定義了那些類?在System類中有那些方法?System.out.println方法是在什么包中定義的?什么是標(biāo)準(zhǔn)輸入方法調(diào)用?2級(jí):創(chuàng)建一個(gè)Java應(yīng)用程序使用任意文本編輯器,創(chuàng)建一個(gè)可打印你選定的字串的及HelloWorldApp類似的應(yīng)用程序。編譯程序并糾正錯(cuò)誤。用解釋器運(yùn)行程序。3級(jí):使用標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出編寫一個(gè)稱為MyCat的應(yīng)用程序,它將從stdin中讀出一行并將這一行寫回到stdout.無(wú)論stdin還是stdout都在java.lang.System類中。三、檢查你的進(jìn)度在進(jìn)入下一模塊之前,請(qǐng)確認(rèn)你已經(jīng)能夠:描述Java編程語(yǔ)言的主要特性描述JVM描述垃圾收集是如何進(jìn)行的列出由處理代碼安全性的Java平臺(tái)所執(zhí)行的三個(gè)任務(wù)定義術(shù)語(yǔ)類、包、applets和application編寫、編譯并運(yùn)行一個(gè)簡(jiǎn)單的Java應(yīng)用程序使用Java技術(shù)應(yīng)用程序編程界面(API)的在線文檔識(shí)別java.lang包中的方法。四、思考題使用Java編程語(yǔ)言將為你的工作帶來(lái)什么益處?第二章標(biāo)識(shí)符、關(guān)鍵字和類型本模塊闡述了在Java技術(shù)程序中使用的基本元素,包括變量、關(guān)鍵字、原始類型和類類型。第一節(jié)相關(guān)問題討論──下列問題及本模塊闡述的論題相關(guān)。你是如何理解類的?你是如何理解一個(gè)對(duì)象的?第二節(jié)目標(biāo)完成本模塊的學(xué)習(xí)后,你應(yīng)該能夠:在一個(gè)源程序中使用聲明區(qū)分有效和無(wú)效標(biāo)識(shí)符確認(rèn)Java技術(shù)關(guān)鍵字列出八個(gè)原始類型為數(shù)字類型和文本類型定義文字值定義術(shù)語(yǔ)class、object、membervariable和referencevariable為一個(gè)簡(jiǎn)單的包含原始成員變量的類創(chuàng)建一個(gè)類定義聲明類類型變量使用new構(gòu)造一個(gè)對(duì)象描述缺省初始化使用點(diǎn)符號(hào)訪問一個(gè)對(duì)象的成員變量描述一個(gè)參考變量的意義規(guī)定分配類類型變量的結(jié)果注釋注釋三種允許的Java技術(shù)程序注釋風(fēng)格//commentononeline/*commentononeormoreline*//**documentingcomment*/2.3.1概述有三種插入注釋的允許風(fēng)格://commentononeline/*commentononeormoreline*//**documentingcomment*/緊放在聲明(變量、方法或類的聲明)之前的文檔注釋表明,注釋應(yīng)該被放在自動(dòng)生成的文檔中(由javadoc命令生成的HTML文件)以當(dāng)作對(duì)聲明項(xiàng)的描述。注意有關(guān)這些注釋的格式和javadoc工具的使用,請(qǐng)見JDK1.2API文件的docs/tooldocs/win32目錄分號(hào)、塊和空白分號(hào)、塊和空白一個(gè)語(yǔ)句是一行用分號(hào)(;)終止的代碼totals=a+b+c+d+e+f;一個(gè)塊是以上括號(hào)和下括號(hào)為邊界的語(yǔ)句集合x=y+1y=x+1在Java編程語(yǔ)言中,語(yǔ)句是一行由分號(hào)(;)終止的代碼。例如totals=a+b+c+d+e+f;及下式相同total=a+b+c+d+e+f;一個(gè)塊(block)或一個(gè)復(fù)合語(yǔ)句是以上括號(hào)和下括號(hào)()為邊界的語(yǔ)句集合;塊語(yǔ)句也被用來(lái)組合屬于某個(gè)類的語(yǔ)句。分號(hào)、塊和空白(續(xù))分號(hào)、塊和空白一個(gè)塊可被用在一個(gè)類的定義中publicclassDateintday;intmonth;intyear;塊語(yǔ)句可被嵌套Java程序中允許任意多的空白語(yǔ)句塊可被嵌套。HelloWorldApp類由main方法構(gòu)成,這個(gè)方法就是一個(gè)語(yǔ)句塊,它是一個(gè)獨(dú)立單元,單元本身可作為在類HelloWorldApp塊中的一組事務(wù)之一。其它一些塊語(yǔ)句或組的例子如下://ablockstatement{x=y+1;y=x+1;}Semicolons,Blocks,andWhitespace//ablockusedinaclassdefinitionpublicclassMyDate{intday;intmonth;intyear;}//anexampleofablockstatementnestedwithin//anotherblockstatementwhile(i<large){a=a+i;if(a==max){b=b+a;//nestedblockisherea=0;}}在源代碼元素之間允許空白,空白的數(shù)量不限??瞻?包括空格、tabs和新行)可以改善你的對(duì)源代碼的視覺感受。{intx;x=23*54;}intxx=23+54;}第四節(jié)標(biāo)識(shí)符標(biāo)識(shí)符是賦予變量、類和方法的名稱可從一個(gè)字母、下劃線(_)或美元符號(hào)($)開始是大小寫區(qū)別對(duì)待的,且無(wú)最大長(zhǎng)度在Java編程語(yǔ)言中,標(biāo)識(shí)符是賦予變量、類或方法的名稱。標(biāo)識(shí)符可從一個(gè)字母、下劃線(_)或美元符號(hào)($)開始,隨后也可跟數(shù)字。標(biāo)識(shí)符是大小寫區(qū)別對(duì)待的并且未規(guī)定最大長(zhǎng)度。有效標(biāo)識(shí)符如下:identifieruserNameUser_name_sys_varl$changeJava技術(shù)源程序采用有效的16-bit雙字節(jié)字符編碼標(biāo)準(zhǔn)(Unicode),而不是8-bitASCII文本。因而,一個(gè)字母有著更廣泛的定義,而不僅僅是a到z和A到Z。謹(jǐn)慎對(duì)待非ASCII字符,因?yàn)閁nicode可支持看似相同而實(shí)際不同的字符。標(biāo)識(shí)符不能是關(guān)鍵字,但是它可包含一個(gè)關(guān)鍵字作為它的名字的一部分。例如,thisone是一個(gè)有效標(biāo)識(shí)符,但this卻不是,因?yàn)閠his是一個(gè)Java關(guān)鍵字。Java關(guān)鍵字將在后面討論。注意──包含美元符號(hào)($)的關(guān)鍵字通常用的較少,盡管它在BASIC和VAX/VMS系統(tǒng)語(yǔ)言中有著廣泛的應(yīng)用。由于它們不被熟知,因而最好避免在標(biāo)識(shí)符中使用它們,除非有本地使用上的習(xí)慣或其他不得已的原因。第五節(jié)Java關(guān)鍵字表2-1列出了使用在Java編程語(yǔ)言中的關(guān)鍵字。abstractdoimplementsprivatethrowbooleandoubleimportprotectedthrowsbreakelseinstanceofpublictransientbyteextendsintreturntruecasefalseinterfaceshorttrycatchfinallongstaticvoidcharfinallynativesupervolatileclassfloatnewswitchwhilecontinuefornullsynchronizeddefaultifpackagethis關(guān)鍵字對(duì)Java技術(shù)編譯器有特殊的含義,它們可標(biāo)識(shí)數(shù)據(jù)類型名或程序構(gòu)造(construct)名。以下是有關(guān)關(guān)鍵字的重要注意事項(xiàng):true、false和null為小寫,而不是象在C++語(yǔ)言中那樣為大寫。嚴(yán)格地講,它們不是關(guān)鍵字,而是文字。然而,這種區(qū)別是理論上的。無(wú)sizeof運(yùn)算符;所有類型的長(zhǎng)度和表示是固定的,不依賴執(zhí)行。goto和const不是Java編程語(yǔ)言中使用的關(guān)鍵字?;綣ava類型Java編程語(yǔ)言定義了八個(gè)原始類型邏輯類boolean文本類char整數(shù)類byte,short,int,long浮點(diǎn)類double,float2.6.1原始類型Java編程語(yǔ)言為八個(gè)原始數(shù)據(jù)類型和一個(gè)特殊類型定義了文字值。原始類型可分為四種:邏輯類boolean文本類char整數(shù)類byte,short,int,long浮點(diǎn)類double,float2.6.2基本Java類型1.邏輯類──boolean邏輯類邏輯類──booleanboolean數(shù)據(jù)類型有兩種文字值:true和false。例如:booleantruth=true;上述語(yǔ)句聲明變量truth為boolean類型,它被賦予的值為true。邏輯值有兩種狀態(tài),即人們經(jīng)常使用的“on”和“off”或“true”和“false”或“yes”和“no”,這樣的值是用boolean類型來(lái)表示的。boolean有兩個(gè)文字值,即true和false。以下是一個(gè)有關(guān)boolean類型變量的聲明和初始化:booleantruth=true;//declaresthevariabletruth//asbooleantypeandassignsit//thevaluetrue注意──在整數(shù)類型和boolean類型之間無(wú)轉(zhuǎn)換計(jì)算。有些語(yǔ)言(特別值得強(qiáng)調(diào)的是C和C++)允許將數(shù)字值轉(zhuǎn)換成邏輯值,這在Java編程語(yǔ)言中是不允許的;boolean類型只允許使用boolean值。2.文本類──char和String文本類──char和Stringchar代表一個(gè)16-bitUnicode字符必須包含用單引號(hào)(’’)引用的文字使用下列符號(hào):‘a(chǎn)’‘\t’一個(gè)制表符‘\u’一個(gè)特殊的Unicode字符,應(yīng)嚴(yán)格使用四個(gè)16進(jìn)制數(shù)進(jìn)行替換使用char類型可表示單個(gè)字符。一個(gè)char代表一個(gè)16-bit無(wú)符號(hào)的(不分正負(fù)的)Unicode字符。一個(gè)char文字必須包含在單引號(hào)內(nèi)(‘’)?!產(chǎn)’‘\t’一個(gè)制表符‘\u’一個(gè)特殊的Unicode字符。應(yīng)嚴(yán)格按照四個(gè)16進(jìn)制數(shù)字進(jìn)行替換String不是原始類型,而是一個(gè)類(class),它被用來(lái)表示字符序列。字符本身符合Unicode標(biāo)準(zhǔn),且上述char類型的反斜線符號(hào)適用于String。及C和C++不同,String不能用\0作為結(jié)束。文本類──char和StringString不是一個(gè)原始數(shù)據(jù)類型,它是一個(gè)類具有用雙引號(hào)引用的文字“The

quickbrownfoxjumpedoverthelazydog.”可按如下情形使用:Stringgreeting=“GoodMorning!!\n”;Stringerr_meg=“recordnotfound!”;文本類──char和String(續(xù))String的文字應(yīng)用雙引號(hào)封閉,如下所示:“The

quickbrownfoxjumpedoverthelazydog.”Char和String類型變量的聲明和初始化如下所示:charch=`A';//declaresandinitializesacharvariablecharch1,ch2;//declarestwocharvariables//declaretwoStringvariablesandinitializethemStringgreeting="GoodMorning!!\n";Stringerr_msg="RecordNotFound!";Stringstr1,str2;//declaretwoStringvariables2.6.3整數(shù)類──整數(shù)類整數(shù)類──byte,short,int,long采用三種進(jìn)制──十進(jìn)制、八進(jìn)制和16進(jìn)制2十進(jìn)制值是2077首位的0表示這是一個(gè)八進(jìn)制的數(shù)值0xBAAC首位的0x表示這是一個(gè)16進(jìn)制的數(shù)值具有缺省int用字母“L”和“l(fā)”定義long在Java編程語(yǔ)言中有四種整數(shù)類型,每種類型可使用關(guān)鍵字byte,short,int和long中的任意一個(gè)進(jìn)行聲明。整數(shù)類型的文字可使用十進(jìn)制、八進(jìn)制和16進(jìn)制表示,如下所示:2十進(jìn)制值是2077首位的0表示這是一個(gè)八進(jìn)制的數(shù)值0xBAAC首位的0x表示這是一個(gè)16進(jìn)制的數(shù)值注意──所有Java編程語(yǔ)言中的整數(shù)類型都是帶符號(hào)的數(shù)字。整數(shù)類──byte,short,int,long(續(xù))整數(shù)類文字屬int類型,除非在其后直接跟著一個(gè)字母“L”。L表示一個(gè)long值。請(qǐng)注意,在Java編程語(yǔ)言中使用大寫或小寫L同樣都是有效的,但由于小寫l及數(shù)字1容易混淆,因而,使用小寫不是一個(gè)明智的選擇。上述文字的long的形式如下:2L十進(jìn)制值是2,是一個(gè)long077L首位的0表示這是一個(gè)八進(jìn)制的數(shù)值0xBAACL前綴0x表示這是一個(gè)16進(jìn)制的數(shù)值整數(shù)類──byte,short,int,long每個(gè)整數(shù)數(shù)據(jù)類型具有下列范圍:IntegerLengthNameorTypeRange8bitsbyte-27...27-116bitsshort-215...215-132bitint-231...231-164bitslong-263...263-1整數(shù)類──byte,short,int,long(續(xù))四個(gè)整數(shù)類型的長(zhǎng)度和范圍如表2-2所示。范圍的表示是按Java編程語(yǔ)言規(guī)范定義的且不依賴于平臺(tái)。表2-2整數(shù)數(shù)據(jù)類型—范圍IntegerLengthNameorTypeRange8bitsbyte-27...27-116bitsshort-215...215-132bitint-231...231-164bitslong-263...263-12.6.4浮點(diǎn)──float和浮點(diǎn)──float和double缺省為double浮點(diǎn)文字包括小數(shù)點(diǎn)或下列各項(xiàng)之一E或e(增加指數(shù)值)F或f(float)D或d(double)14一個(gè)簡(jiǎn)單的浮點(diǎn)值(adouble)02E23一個(gè)大浮點(diǎn)值2.718F一個(gè)簡(jiǎn)單的float長(zhǎng)度值123.4E+306D一個(gè)大的帶冗余D的double值浮點(diǎn)變量可用關(guān)鍵字float或double來(lái)聲明,下面是浮點(diǎn)數(shù)的示例。如果一個(gè)數(shù)字文字包括小數(shù)點(diǎn)或指數(shù)部分,或者在數(shù)字后帶有字母F或f(float)、D或d(double),則該數(shù)字文字為浮點(diǎn)。14一個(gè)簡(jiǎn)單的浮點(diǎn)值(adouble)02E23一個(gè)大浮點(diǎn)值2.718F一個(gè)簡(jiǎn)單的float長(zhǎng)度值123.4E+306D一個(gè)大的帶冗余D的double值浮點(diǎn)──float和double浮點(diǎn)數(shù)據(jù)類型具有下列范圍:浮點(diǎn)長(zhǎng)度名稱或類型32bitsfloat64bitsdouble浮點(diǎn)──float和double(續(xù))表2—3浮點(diǎn)數(shù)據(jù)類型──范圍浮點(diǎn)長(zhǎng)度名稱或類型32bitsfloat64bitsdouble注意──浮點(diǎn)文字除非明確聲明為float,否則為double第七節(jié)變量、聲明和賦值Java技術(shù)規(guī)范的浮點(diǎn)數(shù)的格式是由電力電子工程師學(xué)會(huì)(IEEE)754定義的,它使用表2—3的長(zhǎng)度,并且是獨(dú)立于平臺(tái)的。下列程序顯示了如何為整數(shù)、浮點(diǎn)、boolean、字符和string類型變量聲明和賦值。1.publicclassAssign{2.publicstaticvoidmain(Stringargs[]){3.intx,y;//declareint//variables4.floatz=3.414f;//declareandassign//float5.doublew=3.1415;//declareandassign//double6.booleantruth=true;//declareandassign//boolean7.charc;//declarecharacter//variable8.Stringstr;//declareString9.Stringstr1="bye";//declareandassign//Stringvariable10.c='A';//assignvaluetochar//variable11.str="Hioutthere!";//assignvalueto//Stringvariable12.x=6;13.y=1000;//assignvaluestointvariables1415.}16.}非法賦值舉例y=3.1415926;//3.1415926isnotanint.//Requirescastinganddecimalwill//betruncated.w=175,000;//thecommasymbol(,)cannotappeartruth=1;//acommonmistakemadebyex-C/C++//programmers.z=3.14156;//can'tfitdoubleintoa//Float.Requirescasting.第八節(jié)Java編碼約定JavaJava編碼約定類:classAccountBookclassComplexVariable界面:interfaceAccount方法:balanceAccount()addComplex()Java編程語(yǔ)言的一些編碼約定是:classes──類名應(yīng)該是名詞,大小寫可混用,但首字母應(yīng)大寫。例如:classAccountBookclassComplexVariableinterface──界面名大小寫規(guī)則及類名相同。interfaceAccountmethod──方法名應(yīng)該是動(dòng)詞,大小寫可混用,但首字母應(yīng)小寫。在每個(gè)方法名內(nèi),大寫字母將詞分隔并限制使用下劃線。例如:balanceAccount()addComplex()JavaJava編碼約定變量currentCustomer常量HEAD-COUNTMAXIMUM-SIZEJava編碼約定Variables──所有變量都可大小寫混用,但首字符應(yīng)小寫。詞由大寫字母分隔,限制用下劃線,限制使用美元符號(hào)($),因?yàn)檫@個(gè)字符對(duì)內(nèi)部類有特殊的含義。currentCustomer變量應(yīng)該代表一定的含義,通過它可傳達(dá)給讀者使用它的意圖。盡量避免使用單個(gè)字符,除非是臨時(shí)“即用即扔”的變量(例如,用i,j,k作為循環(huán)控制變量)constant──原始常量應(yīng)該全部大寫并用下劃線將詞分隔;對(duì)象常量可大小寫混用。HEAD-COUNTMAXIMUM-SIZEcontrolstructures──當(dāng)語(yǔ)句是控制結(jié)構(gòu)的一部分時(shí),即使是單個(gè)語(yǔ)句也應(yīng)使用括號(hào)({})將語(yǔ)句封閉。例如:if(condition){dosomething}else{dosomethingelse}spacing──每行只寫一個(gè)語(yǔ)句并使用四個(gè)縮進(jìn)的空格使你的代碼更易讀。comments──用注釋來(lái)說(shuō)明那些不明顯的代碼段落;對(duì)一般注釋使用//分隔符,而大段的代碼可使用/*···*/分隔符。使用/**···*/將注釋形成文檔,并輸入給javadoc以生成HTML代碼文檔。//Acommentthattakesuponlyoneline./*Commentsthatcontinuepastonelineandtakeupspaceonmultiplelines...*//**Acommentfordocumentationpurposes.@seeAnotherclassformoreinformation*/注意──@see是一個(gè)有關(guān)類或方法的特殊的javadoc標(biāo)記符(”seealso”)。有關(guān)javadoc的詳細(xì)資料,請(qǐng)參見“TheDesignofDistributedHyperlinkedProgrammingDocumentation”(Lisa著)的有關(guān)文檔系統(tǒng)的完整定義。該資料可從下列地址獲得:.第九節(jié)理解對(duì)象理解對(duì)象理解對(duì)象回顧對(duì)象的歷史創(chuàng)建一個(gè)新的類型,如datepublicclassdate{intday;intmonth;intyear;}聲明一個(gè)變量DatemyBirth,yourBirth訪問成員myBirth.day=26;myBirth.month=11;yourBirth.year=1960;2.9.1回顧對(duì)象的歷史早些時(shí)候的編程語(yǔ)言和初級(jí)程序員將每個(gè)變量看作相互無(wú)關(guān)的實(shí)體。例如,如果一個(gè)程序需處理某個(gè)日期,則要聲明三個(gè)單獨(dú)的整數(shù):intday,month,year;上述語(yǔ)句作了兩件事,一是當(dāng)程序需要日、月或年的有關(guān)信息時(shí),它將操作一個(gè)整數(shù);二是為那些整數(shù)分配存儲(chǔ)器。盡管這種作法很容易理解,但它存在兩個(gè)重大缺陷。首先,如果程序需同時(shí)記錄幾個(gè)日期,則需要三個(gè)不同的聲明。例如,要記錄兩個(gè)生日,你可能使用:intmyBirthDay,myBirthMonth,myBirthYear;intyourBirthDay,yourBirthMonth,yourBirthYear;這種方法很快就會(huì)引起混亂,因?yàn)樾枰拿Q很多。第二個(gè)缺陷是這種方法忽視了日、月和年之間的聯(lián)系并把每個(gè)變量都作為一個(gè)獨(dú)立的值,每個(gè)變量都是一個(gè)獨(dú)立單元(在本例中為date)的一部分并被相應(yīng)地處理。2.9.2創(chuàng)建一個(gè)新類型為克服上述兩種缺陷,Java編程語(yǔ)言使用類來(lái)創(chuàng)建新類型。請(qǐng)看下列原始類型聲明:intday;Java編程語(yǔ)言被用來(lái)分配一定量的存儲(chǔ)器并解釋該存儲(chǔ)器的內(nèi)容。于是,要定義一個(gè)新的類型,你必須指出需要多大存儲(chǔ)器和如何解釋存儲(chǔ)器內(nèi)容。這不是根據(jù)字節(jié)數(shù)或位的順序和含義來(lái)做,而是根據(jù)已經(jīng)定義的其它類型來(lái)做。例如,要定義一個(gè)表示日期的類型,你需要足夠的存儲(chǔ)器存儲(chǔ)三個(gè)整數(shù)變量;進(jìn)而,日、月和年的意義即由這些整數(shù)變量給出。如下所示:classMyDateintday;intmonth;intyear;詞class是Java編程語(yǔ)言的一個(gè)關(guān)鍵字,必須全部小寫。名稱MyDate按照大小寫的有關(guān)約定處理,而不是由語(yǔ)意要求來(lái)定。注意class不僅僅是一個(gè)集合數(shù)據(jù)類型,這個(gè)問題以后還將進(jìn)一步討論。一個(gè)變量可被聲明為歸屬于類型MyDate,從而日、月和年部分將被隱含聲明。例如:MyDatemyBirth,yourBirth;使用這個(gè)聲明,Java編程語(yǔ)言允許變量的部分(day,month和year)通過調(diào)用成員和使用點(diǎn)(·)運(yùn)算符而被訪問。例如:myBirth.day=26;myBirth.month=11;yourBirth.year=1960;2.9.3創(chuàng)建一個(gè)對(duì)象創(chuàng)建一個(gè)對(duì)象創(chuàng)建一個(gè)對(duì)象原始類型的聲明可分配存儲(chǔ)器空間非原始類型的聲明不分配存儲(chǔ)器空間聲明的變量不是數(shù)據(jù)本身,而是數(shù)據(jù)的引用(或指針)當(dāng)任何原始類型(如boolean,byte,short,char,int,long,float或double類型)的變量被聲明時(shí),作為上述操作的一部分,存儲(chǔ)器空間也同時(shí)被分配。使用非原始類型(如String或class)的變量的聲明不為對(duì)象分配存儲(chǔ)器空間。事實(shí)上,使用class類型聲明的變量不是數(shù)據(jù)本身,而是數(shù)據(jù)的引用(reference)。注意你也可以認(rèn)為引用是一個(gè)指針(pointer),這可能會(huì)有助于你的理解。實(shí)際上,在大多數(shù)實(shí)現(xiàn)中,也確實(shí)可以這樣認(rèn)為。值得注意的是,Java編程語(yǔ)言實(shí)際上不支持指針數(shù)據(jù)類型。在你可以使用變量之前,實(shí)際存儲(chǔ)器必須被分配。這個(gè)工作是通過使用關(guān)鍵字new來(lái)實(shí)現(xiàn)的。如下所示:MyDatemyBirth;myBirth=newMyDate();第一個(gè)語(yǔ)句(聲明)僅為引用分配了足夠的空間,而第二個(gè)語(yǔ)句則通過調(diào)用對(duì)象為構(gòu)成MyDate的三個(gè)整數(shù)分配了空間。對(duì)象的賦值使變量myBirth重新正確地引用新的對(duì)象。這兩個(gè)操作被完成后,MyDate對(duì)象的內(nèi)容則可通過myBirth進(jìn)行訪問。假使定義任意一個(gè)classXXXX,你可以調(diào)用newXXXX()來(lái)創(chuàng)建任意多的對(duì)象,對(duì)象之間是分隔的。一個(gè)對(duì)象的引用可被存儲(chǔ)在一個(gè)變量里,因而一個(gè)”變量點(diǎn)成員”(如myBirth.day)可用來(lái)訪問每個(gè)對(duì)象的單個(gè)成員。請(qǐng)注意在沒有對(duì)象引用的情況下,仍有可能使用對(duì)象,這樣的對(duì)象稱作”匿名”對(duì)象。2.9.4創(chuàng)建一個(gè)對(duì)象存儲(chǔ)器分配和布局創(chuàng)建一個(gè)對(duì)象創(chuàng)建一個(gè)對(duì)象存儲(chǔ)器分配和布局一個(gè)聲明僅為一個(gè)引用分配存儲(chǔ)器MyDatetodaytoday=newMyDate();today在一個(gè)方法體中,聲明MyDatetodaytoday=newMyDate();僅為一個(gè)引用分配存儲(chǔ)器today關(guān)鍵字new意味著存儲(chǔ)器的分配和初始化MyDatetoday;today=newMyDate();賦值則建立了引用變量,從而它可適當(dāng)?shù)匾眯碌膭?chuàng)建對(duì)象MyDatetoday;today=newMyDate();使用一個(gè)語(yǔ)句同時(shí)為引用today和由引用today所指的對(duì)象分配空間也是可能的。MyDatetoday=newMyDate();2.9.5引用類型的賦值引用變量的賦值引用變量的賦值請(qǐng)考慮下列代碼片段:intx=7;inty=x;Strings=“Hello”;Stringt=s;在Java編程語(yǔ)言中,用類的一個(gè)類型聲明的變量被指定為引用類型,這是因?yàn)樗谝靡粋€(gè)非原始類型,這對(duì)賦值具有重要的意義。請(qǐng)看下列代碼片段:intx=7;inty=x;Strings=“Hello”;Stringt=s;四個(gè)變量被創(chuàng)建:兩個(gè)原始類型int和兩個(gè)引用類型String。x的值是7,而這個(gè)值被復(fù)制到y(tǒng);x和y是兩個(gè)獨(dú)立的變量且其中任何一個(gè)的進(jìn)一步的變化都不對(duì)另外一個(gè)構(gòu)成影響。至于變量s和t,只有一個(gè)String對(duì)象存在,它包含了文本”Hello”,s和t均引用這個(gè)單一的對(duì)象。將變量t重新定義,則新的對(duì)象World被創(chuàng)建,而t引用這個(gè)對(duì)象。上述過程被描述如下:2.9.6術(shù)語(yǔ)回顧術(shù)語(yǔ)回顧術(shù)語(yǔ)回顧C(jī)lassObjectReferencetypemember本模塊中介紹了幾個(gè)術(shù)語(yǔ),簡(jiǎn)單回顧如下:類在Java編程語(yǔ)言中定義新類型的一種途徑。類聲明可定義新類型并描述這些類型是如何實(shí)現(xiàn)的。有許多關(guān)于類的其它特性還未討論。對(duì)象一個(gè)類的實(shí)例。類可被認(rèn)為是一個(gè)模板你正在描述一個(gè)對(duì)象模型。一個(gè)對(duì)象就是你每次使用new創(chuàng)建一個(gè)類的實(shí)例的結(jié)果。引用類型一個(gè)用戶定義類型,它可引用類、界面和數(shù)組。成員構(gòu)成一個(gè)對(duì)象的元素之一。這個(gè)詞也被用作定義類的元素(elements)。成員變量(membervariabl)、實(shí)例變量(instancevariable)和域(field)也經(jīng)常被互換使用。練習(xí):使用對(duì)象練習(xí)目標(biāo)──正確使用Java關(guān)鍵字,編寫一個(gè)創(chuàng)建類的程序并從類創(chuàng)建一個(gè)對(duì)象。編譯并運(yùn)行程序,然后校驗(yàn)引用是否被賦值并檢查引用是不是按照本模塊所描述的那樣操作的。一、準(zhǔn)備為了成功地完成本練習(xí),你必須能夠編譯并運(yùn)行Java程序,并且需要熟悉有關(guān)類和對(duì)象的面向?qū)ο蟮母拍詈鸵玫母拍?。二、任?wù)1級(jí):創(chuàng)建一個(gè)類和相應(yīng)的對(duì)象一個(gè)點(diǎn)可用x和y坐標(biāo)描述。定義一個(gè)稱為MyPoint的類來(lái)表達(dá)上述想法。你應(yīng)該稱這個(gè)文件為什么在你的類中編寫一個(gè)類方法,然后為類型MyPoint聲明兩個(gè)變量,將變量稱為start和end;用newMyPoint()創(chuàng)建對(duì)象并分別將引用值賦予變量start和end;將值10賦予對(duì)象start的成員x和y;將值20賦予對(duì)象end的x值,將值20賦予對(duì)象end的y值。分別打印MyPoint對(duì)象(start和end)的成員值(x和y)。注意為完成第5步,你需要更多地了解system類。帶自變量String的System.out.println()可輸出string并開始新的一行,而System.out.print()不開始新的一行。如果你使用System.out.print(),你應(yīng)該在這個(gè)應(yīng)用程序結(jié)束之前,調(diào)用System.out.println()或System.out.flush(),否則你會(huì)發(fā)現(xiàn),輸出的最后一行未被顯示出來(lái)。為顯示數(shù)字,你可以使用下列形式(稍后將在本課程中討論)System.out.println(“StartMyPoint=x:“+start.x+“y“+start.y);注意--如果一個(gè)操作數(shù)已經(jīng)是一個(gè)String,則加號(hào)(+)將另一個(gè)操作數(shù)轉(zhuǎn)換成String。編譯并運(yùn)行程序。2級(jí):檢驗(yàn)引用賦值使用你在前一個(gè)練習(xí)中MyPoint類,增加代碼到main()方法,以完成下列事項(xiàng):為類型MyPoint聲明一個(gè)新的變量,稱之為stray。將現(xiàn)存變量end的引用值賦予stray;打印end和stray變量的成員x和y的值;賦予變量stray的成員x和y新的值;打印end和stray的成員的值;編譯并運(yùn)行MyPoint類。end的值反映了stray內(nèi)的變化,表明兩個(gè)變量都引用了同一個(gè)MyPoint對(duì)象;將start變量的成員x和y賦予新的值;打印start和end的成員值;再次編譯并運(yùn)行MyPoint類,start的值仍然獨(dú)立于stray和end的值,表明start變量仍然在引用一個(gè)MyPoint對(duì)象,而這個(gè)對(duì)象及stray和end引用的對(duì)象是不同的。三、練習(xí)小結(jié)討論──用幾分鐘的時(shí)間討論一下在以上練習(xí)中你所獲得的經(jīng)驗(yàn)、感想和發(fā)現(xiàn)。經(jīng)驗(yàn)解釋總結(jié)應(yīng)用四、檢查你的進(jìn)度在進(jìn)入下一模塊之前,請(qǐng)確認(rèn)你已經(jīng)能夠:在源程序中使用注釋區(qū)分有效和無(wú)效標(biāo)識(shí)符識(shí)別Java技術(shù)關(guān)鍵字列出八個(gè)原始類型為數(shù)字和文本類型定義文字值定義術(shù)語(yǔ)class,object,member,variable,referrencevariable為一個(gè)簡(jiǎn)單的包含原始成員變量的類創(chuàng)建一個(gè)類定義聲明類類型的變量使用new構(gòu)造一個(gè)對(duì)象描述缺省初始化使用點(diǎn)符號(hào)訪問一個(gè)對(duì)象的成員變量描述引用變量的意義陳述分配類類型變量的結(jié)果五、思考題在你現(xiàn)有應(yīng)用程序中,你可以構(gòu)思一個(gè)使用類和對(duì)象的例子嗎表達(dá)式和流程控制本模塊討論變量、運(yùn)算符和算術(shù)表達(dá)式并列出不同的管理運(yùn)行程序路徑的控制結(jié)構(gòu)。第一節(jié)相關(guān)問題討論──下列問題及本模塊闡述的論題相關(guān)。什么類型的變量對(duì)程序員有用(例如,其它語(yǔ)言的程序員想了解Java編程語(yǔ)言是如何定義和處理全局變量和局部變量的)?復(fù)合類可以有同名的變量嗎?如果可以,它們的作用域有多大?列出用于其它語(yǔ)言的控制結(jié)構(gòu);一般語(yǔ)言都采用什么方法進(jìn)行流程控制和中斷流程(如在循環(huán)或開關(guān)語(yǔ)句中)?第二節(jié)目標(biāo)完成本模塊的學(xué)習(xí)后,你應(yīng)該能夠:區(qū)分實(shí)例變量和局部變量;描述實(shí)例變量是如何被初始化的;確認(rèn)并更正編譯器錯(cuò)誤;辨認(rèn)、描述并使用Java軟件運(yùn)算符;區(qū)分合法和非法原始類型賦值;確認(rèn)boolean表達(dá)式和它們?cè)诳刂茦?gòu)造中的要求;辨認(rèn)賦值兼容性和在基本類型中的必要計(jì)算;使用if,switch,for,while和do句型結(jié)構(gòu)和break和continue的標(biāo)號(hào)形式作為程序中的流程控制結(jié)構(gòu)。第三節(jié)表達(dá)式3.3.1變量和作用域變量和作用域變量和作用域局部(local)變量是在一個(gè)方法內(nèi)定義的變量,也被稱作自動(dòng)(automatic)、臨時(shí)(temporary)或棧(stack)變量當(dāng)一個(gè)方法被執(zhí)行時(shí),局部變量被創(chuàng)建;當(dāng)一個(gè)方法被終止時(shí),局部變量被清除局部變量必須使用之前初始化,否則編譯時(shí)將出錯(cuò)你已經(jīng)看到了兩種變量的描述方法:原始類型變量和引用類型變量。你也看到了變量被聲明的位置:在方法內(nèi)(方法是面向?qū)ο蟮男g(shù)語(yǔ),它可引用函數(shù)或子程序,例如:main())或在方法外但在類定義之內(nèi)。變量也可被定義為方法參數(shù)或構(gòu)造函數(shù)參數(shù)。在方法內(nèi)定義的參數(shù)被稱為局部(local)變量,有時(shí)也被用為自動(dòng)(automatic)、臨時(shí)(temporary)或棧(stack)變量。在方法外定義的變量是在使用newXxxx()調(diào)用構(gòu)造一個(gè)對(duì)象時(shí)被創(chuàng)建。在構(gòu)造一個(gè)對(duì)象時(shí),可創(chuàng)建兩種變量。一是類變量,它是用static關(guān)鍵字來(lái)聲明的;只要

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論