JAVA程序設(shè)計課件_第1頁
JAVA程序設(shè)計課件_第2頁
JAVA程序設(shè)計課件_第3頁
JAVA程序設(shè)計課件_第4頁
JAVA程序設(shè)計課件_第5頁
已閱讀5頁,還剩303頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

(Java編程語言)

2004年1月9日,美國“勇氣”號探測器成功登陸火星,并在隨后的一段時間內(nèi),由遠在美國NASA中的科學(xué)家們控制,對火星進行了成功的探訪。美國BEA公司,1995年創(chuàng)辦,兩年后上市,六年后用戶數(shù)過萬,八年后營業(yè)額超過10億美元,創(chuàng)造了全球軟件產(chǎn)業(yè)的一個奇跡。一種可同時適用于高性能企業(yè)計算平臺、桌面計算平臺和移動計算平臺的計算機編程技術(shù)。這些的事例有什么內(nèi)在聯(lián)系?Java編程語言Java語言的發(fā)展歷史Java語言前身是Oak語言,于1991年推出,但僅限于SunMicrosystems公司內(nèi)部使用1995年Oak語言改名為“Java”,并正式向公眾推出1.2版本的Java是Java語言發(fā)展過程中一個關(guān)鍵階段,從此,Sun公司將Java更名為Java2經(jīng)過十年的發(fā)展,Java語言已經(jīng)發(fā)展到1.5版本,目前最常用的是1.4版本Java語言的發(fā)展現(xiàn)狀

當(dāng)今,Java技術(shù)已經(jīng)滲透到了世界的每個角落——小到生活中的電話、烤面包機,大到汽車,都有它的身影。權(quán)威調(diào)查顯示,目前全球已有超過40%的軟件開發(fā)人員使用Java語言,2004年這個數(shù)字上升至61%。當(dāng)今全球已經(jīng)擁有超過300萬使用它作為開發(fā)語言的程序員,超過2.67億部支持Java的電話,以及有超過3億的Java卡在世界各地被配置。我國對Java技術(shù)人才的年需求量高達20余萬人。

Java語言的發(fā)展現(xiàn)狀JAVAJava語言的未來高性能企業(yè)計算(J2EE)高性能移動計算(J2ME)高性能的分布式計算(RMI、JINI)嵌入式系統(tǒng)開發(fā)和設(shè)備控制實時系統(tǒng)開發(fā)計算機語言的分類根據(jù)計算機語言與人的自然語言的接近程度和與計算機硬件的依賴程度,可以把計算機語言分為:機器語言匯編語言高級語言Java計算機語言的分類根據(jù)程序設(shè)計中以過程為中心還是以類為中心,可以把計算機語言分為:面向過程語言面向?qū)ο笳Z言Java計算機語言的分類根據(jù)語言所生成的可執(zhí)行代碼的執(zhí)行方式的不同

,可以把計算機語言分為:編譯執(zhí)行語言解釋執(zhí)行語言Java

Java語言是一種高級的面向?qū)ο笳Z言,它采用解釋執(zhí)行。面向過程與面向?qū)ο?/p>

面向過程的程序設(shè)計是用結(jié)構(gòu)化編程語句來編寫程序。它把一個復(fù)雜的程序分解成若干個較小的過程,每個過程都可以單獨地設(shè)計、修改、調(diào)試。問題數(shù)據(jù)集合過程集合結(jié)果制定表示為傳遞給計算面向過程與面向?qū)ο?/p>

面向?qū)ο蟮某绦蛟O(shè)計也稱為面向類的編程,把問題一般化后抽象為描述問題的類(Class),通過類的內(nèi)部數(shù)據(jù)(Field)來表示問題的狀態(tài),創(chuàng)建類的實例(Instance)來表示具體的問題,通過類或?qū)嵗姆椒?Method)的執(zhí)行得到問題的解。問題類結(jié)果實例抽象創(chuàng)建計算Java技術(shù)體系針對企業(yè)計算、桌面計算和移動計算,Java平臺提供了三個版本,形成了三大技術(shù)體系:Java2Platform,StandardEdition(J2SE)Java2Platform,EnterpriseEdition(J2EE)Java2Platform,MicroEdition(J2ME)Java語言的特點簡單、安全、可靠面向?qū)ο蠼忉寛?zhí)行結(jié)構(gòu)中立、可移植性高性能多線程動態(tài)性Java程序的跨平臺運行機制SourceCode(源程序*.java)ByteCode(字節(jié)碼文件*.class)JVM(Java虛擬機)JVM(Java虛擬機)JVM(Java虛擬機)WindowsLinuxUnixcomplie(編譯)load(載入)execute(解釋)Java語言的開發(fā)工具TheJ2SESystemDevelopmentKit(JDK)JavaIDE(Java集成開發(fā)環(huán)境)JavaRuntimeEnvironment(JRE)(Java執(zhí)行環(huán)境)Tools(各種工具程序)JavaClassLibrarySourceFiles(Java類庫源碼)Demo(關(guān)于各種類的例程)JBuilderNetbeansWorkshopIntelliJWSADEclipseJava資源Sun公司Java技術(shù)官方網(wǎng)站Eclipse項目網(wǎng)站各種Java相關(guān)開源項目網(wǎng)站我的課件和資料發(fā)布空間Java程序開發(fā)過程安裝JDK設(shè)置環(huán)境變量安裝IDE源程序文件(*.java)編譯字節(jié)碼文件(*.class)程序設(shè)計程序修改錯誤成功保存AppletRichClientAppJ2EEServerAppJ2MEApp安裝開發(fā)運行面向?qū)ο蟪绦蛟O(shè)計(OOP)CompartandConquer(分而置之)系統(tǒng)子系統(tǒng)子系統(tǒng)子系統(tǒng)子系統(tǒng)子系統(tǒng)類類類類類數(shù)據(jù)集方法集面向?qū)ο蟪绦蛟O(shè)計(OOP)類、對象類(class)——根據(jù)特定的設(shè)計考慮將數(shù)據(jù)和方法組織在一起的一個模板,是構(gòu)成系統(tǒng)或參與計算的邏輯組件,用它可以創(chuàng)建對象。類也可以看作是對象的數(shù)據(jù)類型。對象(object)——類的實例,也可看作是類的變量。一個類可以創(chuàng)建多個對象,每個對象都有一份獨立的數(shù)據(jù)拷貝,可以使用類中的方法來訪問或修改對象,對一個對象的修改并不影響其它對象。面向?qū)ο蟪绦蛟O(shè)計(OOP)域、方法域(field)——類中聲明的變量,域可分為類的域(保留字static修飾的域)和對象的域。方法(method)——類中聲明的函數(shù),方法可分為類的方法(保留字static修飾的方法)和對象的方法。問題寫一個程序打印斐波拉契(Fibonacci)數(shù)列,數(shù)列的長度可以由輸入指定。斐波拉契(Fibonacci)數(shù)列是的前兩項分別是1和1,后續(xù)各項分別是前面兩項的和。

1

1

2

3

5

8

13

21

34……長度5長度9思路用一個類來表示斐波拉契數(shù)列,用類的對象來表示一個具體的數(shù)列長度是數(shù)列的屬性,類中應(yīng)有一個域來表示數(shù)列的長度,并且這個域?qū)τ诿總€對象都是獨立的打印數(shù)列是操作數(shù)列的一種方式,類中應(yīng)有一個方法來提供這項操作,并且這個方法應(yīng)是針對每個對象的提供一種接收輸入數(shù)據(jù)的方式Fibonacci類publicclassFibonacci{privateintlength;

publicFibonacci(intlen){

length=len;

}

publicvoidprint(){

intlo=1;

inthi=1;

System.out.println(lo);

for(inti=0;i<length-2;i++){

System.out.println(hi);

hi=hi+lo;

lo=hi-lo;

}

}}類頭(classhead)類體(classbody)類體部分聲明了類或類的對象將使用的變量(域)和類或類的對象可以提供的方法。類頭部分用于聲明類、指定類的名稱、指定類的可見性以及類的可擴展性。聲明整數(shù)類型的變量length聲明打印數(shù)列的方法print聲明類的構(gòu)造函數(shù)類的main方法main方法必須聲明為以下格式:main方法是程序執(zhí)行時第一個被執(zhí)行的方法以main方法作為執(zhí)行起點的Java程序又稱為JavaApplicationpublicstaticvoidmain(String[]args){……}Fibonacci類的main方法在main方法中接收程序執(zhí)行時傳入的參數(shù),然后創(chuàng)建Fibonacci類的對象,執(zhí)行對象的print方法打印出指定長度的數(shù)列publicclassFibonacci{

……

publicstaticvoidmain(String[]args){

intlen=Integer.parseInt(args[0]);

Fibonaccifibo=newFibonacci(len);

fibo.print();

}}將傳入的參數(shù)轉(zhuǎn)換為整數(shù),作為數(shù)列的長度創(chuàng)建Fibonacci類的對象fibo調(diào)用fibo對象的print方法保存Fibonacci類Java語言的源程序文件以“java”作為文件名的后綴每一個可見性為public的類都應(yīng)保存為以類名作為文件名(字母的大小寫敏感),以“java”作為后綴的文件每一個源程序文件中可以聲明一個或多個類,但只能有一個public的類Fibonacci.javaEnvironmentVariable(環(huán)境變量)環(huán)境變量也稱為系統(tǒng)變量,是由操作系統(tǒng)提供的一種與操作系統(tǒng)中運行的程序進行通信的機制,一般可為運行的程序提供配置信息環(huán)境變量一般為“名字、值”對,在Shell編程中以${變量名}來取某變量的值常用的Java環(huán)境變量包括:JAVA_HOME

CLASSPATH

PATH環(huán)境變量—

JAVA_HOME環(huán)境變量JAVA_HOME的值應(yīng)設(shè)置為JDK的安裝目錄的路徑,如在Windows平臺上JDK的安裝目錄為“C:\j2sdk1.4.2_08”,則JAVA_HOME為那些需要使用Java命令和JVM的程序提供了通用的路徑信息JAVA_HOME=C:\j2sdk1.4.2_08環(huán)境變量—

CLASSPATH環(huán)境變量CLASSPATH的值一般為一個以分號“;”作為分隔符的路徑列表,如當(dāng)執(zhí)行Java程序時,執(zhí)行命令會首先把類名轉(zhuǎn)換為字節(jié)碼文件的路徑信息,再在環(huán)境變量CLASSPATH的值的路徑列表的每個路徑及其子路徑中搜索指定的字節(jié)碼文件,如果在所有路徑都找不到該文件,就報告錯誤CLASSPATH=d:\path1;e:\path2;…環(huán)境變量—

PATH環(huán)境變量PATH是操作系統(tǒng)使用的變量,用于搜索在Shell中輸入的希望執(zhí)行的命令為了便于使用,一般可把JDK中Java命令程序所在的目錄的路徑加入PATH變量的值中,如:PATH=…;C:\j2sdk1.4.2_08\binJavaCommand(Java命令)Java命令是JDK中附帶的一組可執(zhí)行的程序,主要用于Java程序的編譯、執(zhí)行及其它用途Java命令位于JDK的安裝目錄的子目錄“bin”中,可以通過環(huán)境變量JAVA_HOME來表示命令的位置在Windows平臺上,Java命令通常在命令行窗口中執(zhí)行${JAVA_HOME}/binJava命令列表javac—Java編譯器程序,負(fù)責(zé)創(chuàng)建源程序的字節(jié)碼文件(類名.class文件)java—JVM的啟動程序,用于執(zhí)行編譯好的Java程序javaw—與java命令功能相同,使用它啟動Java程序時命令行窗口自動關(guān)閉,一般用于執(zhí)行GUI程序javadoc—Java幫助文檔自動生成器,用于從Java源文件生成API文檔HTML頁javap—Java類文件解析器,用于從字節(jié)碼文件察看類的域和方法信息Java命令列表javah—C頭文件和Stub文件生成器。javah從Java類生成C頭文件和C源文件。這些文件提供了連接膠合,使Java和C代碼可進行交互。appletviewer—Javaapplet瀏覽器。appletviewer命令可在脫離萬維網(wǎng)瀏覽器環(huán)境的情況下運行Applet程序jar—Java歸檔工具,可將多個文件壓縮為單個JAR歸檔文件。Tips:如果你希望了解一個Java命令的詳細用法,可以在命令后面加上參數(shù)“-h”,如:javac-h編譯Fibonacci類使用javac命令,javac命令的用法如下:在命令行窗口中編譯Fibonacci類源程序javac[options][sourcefiles][@files]-options編譯器可選項列表

-sourcefiles一個或多個要編譯的源程序文件

-@files一個或多個列出源文件列表的文件X:\>javacFibonacci.java類的字節(jié)碼文件類的源程序編譯成功后會生成類的字節(jié)碼文件,字節(jié)碼文件是可被JVM解釋運行的虛擬機指令集和,字節(jié)碼文件以類名作為文件名,以“class”作為文件名的后綴,如:Fibonacci.class執(zhí)行Fibonacci程序使用java命令,java命令的用法如下:在命令行窗口中運行Fibonacci程序java[options]class[argument…]-options可選項列表

-class被執(zhí)行的類名

-argument傳遞給main方法的命令行參數(shù)X:\>javaFibonacci10Fibonacci程序開發(fā)過程圖解第一步:用“記事本”或其它文字編輯工具編寫源程序,并保存為“Fibonacci.java”文件Fibonacci程序開發(fā)過程圖解第二步:在命令行窗口中用javac命令編譯源程序Fibonacci程序開發(fā)過程圖解第三步:在命令行窗口中用java命令運行程序馮·諾依曼體系結(jié)構(gòu)計算機之父——約翰·馮·諾依曼JohnVonNeumann(1903-1957)

20世紀(jì)科學(xué)界最著名的全才大師,在數(shù)學(xué)、物理學(xué)、經(jīng)濟學(xué)等方面都有極高的成就,一生會七種語言,而其在計算機發(fā)展歷史中的地位無人能及,被譽為“計算機之父”,他所提出的計算機體系結(jié)構(gòu)被稱為“馮·諾依曼”體系結(jié)構(gòu),今天絕大多數(shù)的計算機都是按照這一體系結(jié)構(gòu)設(shè)計實現(xiàn)的。馮·諾依曼體系結(jié)構(gòu)馮·諾依曼機包括五大組成部分:

運算器C

邏輯控制器LC

存儲器M

輸入設(shè)備I

輸出設(shè)備O什么是虛擬機?虛擬機是一種對計算機物理硬件計算環(huán)境的軟件實現(xiàn)虛擬機是一種抽象機器,內(nèi)部包含一個解釋器(Interpreter),可以將其它高級語言編譯為虛擬機的解釋器可以執(zhí)行的代碼(稱這種代碼為中間語言IntermediateLanguage),實現(xiàn)高級語言程序的可移植性虛擬機的優(yōu)點平臺無關(guān)性(SystemIndependence)安全(Security)無論是運行在嵌入式設(shè)備還是多個處理器的服務(wù)器上,虛擬機都執(zhí)行相同的指令,所使用的支持庫也具有標(biāo)準(zhǔn)的API和完全相同或相似的行為。虛擬機可以根據(jù)要求對其中執(zhí)行的程序進行控制,使其無法訪問虛擬機運行的操作系統(tǒng)的其它資源。什么是Java虛擬機(JVM)?Java虛擬機(JVM)是專門針對Java語言設(shè)計的一種虛擬機實現(xiàn),有自己的指令系統(tǒng)(字節(jié)碼),用軟件模擬了處理器、堆棧、寄存器等計算機物理組件,可以運行Java語言編譯后得到的字節(jié)碼程序,實現(xiàn)了Java程序的可移植性理解Java程序可移植性一經(jīng)編寫,隨處運行?JVM規(guī)范的一嚴(yán)一寬更好的理解—WOCRACJVM規(guī)范對可移植代碼的嚴(yán)格性-JVM規(guī)范對虛擬機實現(xiàn)的寬松性WriteOnceCarefully,RunAnywhereConditionally.(精心編寫一次就可以有條件的到處運行)JVM的體系結(jié)構(gòu)JVM由多個組件構(gòu)成,包括:-類裝載器(ClassLoader)-字節(jié)碼解釋器(BytecodeInterpreter)-安全管理器(SecurityManager)-垃圾收集器(GarbageCollector)-線程管理(ThreadManagement)-圖形(Graphics)JVM體系結(jié)構(gòu)圖類裝載器字節(jié)碼解釋器安全管理器垃圾收集器線程管理圖形JavaVirtualMachineOperatingSystem字節(jié)碼*.class文件類裝載器(ClassLoader)類裝載器負(fù)責(zé)加載(load)類的字節(jié)碼文件,并完成類的鏈接和初始化工作類的加載步驟把要加載的類名轉(zhuǎn)換為類的字節(jié)碼文件名,并在環(huán)境變量CLASSPATH指定的每個目錄搜索該文件把字節(jié)碼文件讀入緩沖區(qū)將類轉(zhuǎn)換為JVM內(nèi)部的數(shù)據(jù)結(jié)構(gòu)使用校驗器檢查類的合法性如何類是第一次被加載,則對類中的靜態(tài)數(shù)據(jù)進行初始化加載類中所引用的其它類把類中的某些方法編譯為本地代碼字節(jié)碼解釋器(BytecodeInterpreter)JVM使用單字節(jié)長度的操作碼,被稱為“字節(jié)碼”字節(jié)碼可以看作是JVM的匯編語言JVM定義了14類200多個單字節(jié)指令字節(jié)碼解釋器是整個JVM的核心組件,負(fù)責(zé)解釋執(zhí)行由類裝載器加載的字節(jié)碼文件中的字節(jié)碼指令集合,并通過Java運行時環(huán)境(JRE)由底層的操作系統(tǒng)實現(xiàn)操作優(yōu)化字節(jié)碼解釋器使用匯編語言編寫解釋器重組指令流,提高處理器的吞吐量最大程度的使用高速緩存最大程度的使用寄存器安全管理器(SecurityManager)安全管理器根據(jù)一定的安全策略(securitypolicy)對JVM中指令的執(zhí)行進行控制,主要包括那些可能影響下層操作系統(tǒng)的安全性或者完整性的Java服務(wù)調(diào)用每個類裝載器都與某個安全管理器相關(guān),安全管理器負(fù)責(zé)保護系統(tǒng)不受由加載器載入系統(tǒng)的類企圖執(zhí)行的違法操作所侵害默認(rèn)的類轉(zhuǎn)載器使用信任型安全管理器垃圾收集器(GarbageCollector)垃圾收集器用于檢測不再使用的對象,并將它們所占用的內(nèi)存回收J(rèn)ava語言并不是第一個使用垃圾收集技術(shù)的語言,垃圾收集是一種成熟的技術(shù),早期的面向?qū)ο笳Z言LISP、SmallTalk等已經(jīng)提供了垃圾收集機制理想的垃圾收集應(yīng)該回收所有形式的垃圾,如網(wǎng)絡(luò)連接、I/O路徑等JVM中垃圾收集的啟動方式請求式:調(diào)用System.gc()方法請求JVM進行垃圾收集要求式:使用new方法創(chuàng)建對象時,如果內(nèi)存資源不足,則JVM進行垃圾收集后臺式:通過一個獨立的線程檢測系統(tǒng)的空閑狀態(tài),如果發(fā)現(xiàn)系統(tǒng)空閑了多個指令周期,則進行垃圾收集終結(jié)器方法(finalize)終結(jié)器方法是對垃圾收集的補充,JVM保證在對象回收以前調(diào)用對象的finalize()方法finalize方法的聲明形式:

protectedvoidfinalize(){…}finalize方法的設(shè)計缺陷

垃圾收集的不可預(yù)期性、對象復(fù)活問題應(yīng)該盡量避免使用finalize方法,如果必須使用,應(yīng)使該方法的執(zhí)行時間盡量短線程管理(ThreadManagement)線程的概念Java在語言級別提供了對線程的支持,Java語言提供了專門API來啟動、停止線程,改變線程的優(yōu)先級以及處理線程執(zhí)行過程中發(fā)生的中斷線程管理組件中的分派器(Dispatcher)負(fù)責(zé)控制線程的切換,調(diào)度器(Scheduler)負(fù)責(zé)決定線程的運行多線程的實現(xiàn)機制使用內(nèi)核線程(KernelThreads)使用內(nèi)核線程的優(yōu)點內(nèi)核線程是由操作系統(tǒng)的內(nèi)核提供的基本服務(wù)。-很容易擴展到多個處理器-線程在創(chuàng)建它的進程外可見-JVM可以利用操作系統(tǒng)提供的優(yōu)秀的調(diào)度機制多線程的實現(xiàn)機制使用庫線程(LibraryThreads)Sun的綠色線程庫(GreenthreadsLibrary)使用庫線程的優(yōu)點如果操作系統(tǒng)不提供內(nèi)核線程的服務(wù),或者操作系統(tǒng)支持的內(nèi)核線程不滿足JVM的需要,JVM則通過自己提供的線程庫來支持多線程-線程在不同的平臺上具有一致的行為-線程的優(yōu)先級僅在一個進程中有意義輸入/輸出(Input/Output)Java提供了兩種訪問I/O設(shè)備的途徑:

-直接調(diào)用操作系統(tǒng)提供的與I/O相關(guān)的庫函數(shù)

-通過AWT支持異步的用戶界面I/O,通過網(wǎng)絡(luò)包支持異步的網(wǎng)絡(luò)I/O用純的Java語言不能編寫設(shè)備驅(qū)動程序圖象(Graphics)抽象窗口工具包(AWT)AWT的實現(xiàn)機制與不足更強的圖形表現(xiàn)能力Swing觸摸屏界面的支持TrufflesClassesInJavaLanguageTheclassisthefundamentalprogrammingunitoftheJavaprogramminglanguage.(類是Java語言的基本編程單元)Classesprovidethestructureforobjectsandthemechanismstomanufactureobjectsfromaclassdefinition.(類提供了對象的結(jié)構(gòu),可以根據(jù)類的定義創(chuàng)建對象)Eachobjectisaninstanceofaclass.(每一個對象都是某個類的實例)DeclaringClasses(聲明類)聲明類使用如下的語法:

<修飾符>class<類名>{//…classmembers…}保留字class用于聲明類類名用于標(biāo)識類,類名的第一個字母必須是Unicode字母或下劃線“_”classBody{publiclongidNum;publicStringname;publicBodyorbits;publicstaticlongnextID=0;}ClassModifiers(類的修飾符)類的修飾符主要用于描述類的可見性、可擴展性和計算精度等屬性,可用修飾符如下:

public

聲明為public的類可以在其它任何類中被使用,如果沒有聲明為public,則類只能在類所在的包中可使用

abstract

用于聲明抽象類,抽象類不能為實例化,抽象類通常聲明了需要子類實現(xiàn)的抽象方法

final

聲明為final的類不能被繼承

strictfp

聲明為strictfp的類中的浮點計算在所有平臺的JVM中都要求嚴(yán)格相同注意:一個類不能同時聲明為abstract和final的ClassMembers(類的成員)類的成員是指可以聲明在類體中構(gòu)成類的結(jié)構(gòu)的各種組成部分,類可以有成員:

域(Fields)

域是聲明在類體中的各種變量,域可以分為類的域和類的對象的域,分別表示類或?qū)ο蟮臓顟B(tài)

方法(Methods)

方法是一段可執(zhí)行的代碼,方法可以分為類的方法和類的對象的方法,分別表示類或類的對象的行為

嵌套類(NestedClasses)

聲明在類體中的類

嵌套接口(NestedInterfaces)

聲明在類體中的接口Fields(域)域是聲明在類體中的變量(variables),聲明域的語法如下:

<修飾符><類型><域名>;

<修飾符><類型><域名>=<初始值表達式>;classBody{publiclongidNum;publicStringname;publicBodyorbits;publicstaticlongnextID=0;}FieldModifiers(域的修飾符)域的修飾符主要用于描述域的可見性、作用范圍以及其它特性,域的修飾符可以有以下幾種:

訪問控制修飾符

包括public、protected、private,如果不指定,則域使用默認(rèn)訪問修飾符

static

聲明為static的域是類的域,否則為對象的域

final

聲明為final的域只能被初始化一次

transient

聲明為transient的域不能被序列化

volatile

聲明為volatile的域被多個線程訪問時永遠提供域的最新值注意:一個域不能同時聲明為volatile和final的FieldTypes(域的類型)域可以被聲明為基本數(shù)據(jù)類型和類類型基本數(shù)據(jù)類型包括:布爾類型boolean

字符類型char

整數(shù)類型byteshortintlong

浮點類型floatdouble

類類型包括各種類、抽象類和接口FieldInitialization(域的初始化)Java語言是一種強類型語言,所有變量(域和方法中的局部變量)必須被初始化后才能使用域的初始化可以使用兩種方式:隱式和顯式隱式初始化:被聲明為域的變量取其類型的默認(rèn)值<修飾符><類型><域名>;顯式初始化:由初始化表達式計算得到域的初值<修飾符><類型><域名>=<初始值表達式>;域類型的默認(rèn)值類型初始值booleanfalsechar‘\u0000’byte0short0int0long0float0.0fdouble0.0ObjectReferencenullclassBody{publiclongidNum;publicStringname;publicBodyorbits;publicstaticlongnextID=5;}0nullnull5StaticFields(靜態(tài)域)聲明為static的域,稱為靜態(tài)域或類變量(classvariables),沒有被static修飾的域,稱為非靜態(tài)域或?qū)嵗兞?instancevariables)靜態(tài)域類似于類的全局變量,用于表示類本身的狀態(tài),被類的所有對象共享靜態(tài)域可以通過類名或?qū)ο髢煞N方式訪問,一般通過類名訪問System.out.println(Body.nextID)final

域被聲明為final的域只能被初始化一次,即不能再次被賦值final域一般用于聲明那些類或?qū)ο蟮牟豢勺兊膶傩?,比如常量被同時聲明為static和final的域又稱為命名常量(NamedConstant),用于表示那些在類的使用范圍內(nèi)有意義的常數(shù)或不變對象,命名常量的變量名通常都是大寫字母,單詞之間用下劃線“_”連接final域如果是對象引用(objectreference),仍然可以通過該域去改變所引用對象的狀態(tài)AccessControl(域的訪問控制)EncapsulationandData-hiding(封裝和數(shù)據(jù)隱藏)通過訪問控制修飾符(accessmodifiers)可以限制域在類或?qū)ο笸獠康目梢娦?/p>

public

共有的,域在任何地方都可以訪問

protected

受保護的,域僅在類體中、子類類體中或同包的其它類類體中可訪問

private

私有的,域僅在類體中可訪問

package

默認(rèn)的,沒有任何訪問修飾符修飾的域,僅在類體中、同包的其它類類體中可訪問ClassConstructor(類的構(gòu)造函數(shù))構(gòu)造函數(shù)用于初始化對象的狀態(tài),一般與保留字new一起使用,用于創(chuàng)建類的對象構(gòu)造函數(shù)與一般的方法相似,但沒有返回值,而且構(gòu)造函數(shù)必須與類同名如果聲明類時沒有聲明構(gòu)造函數(shù),則類將自動擁有一個無參數(shù)的默認(rèn)構(gòu)造函數(shù)一個類可以聲明多個構(gòu)造函數(shù),但構(gòu)造函數(shù)的參數(shù)必須不同classBody{publiclongidNum;publicStringname=“<unnamed>”;publicBodyorbits=null;publicstaticlongnextID=0;Body(){idNum=nextID++;}Body(Stringname){=name;idNum=nextID++;}}this保留字this保留字在類體中有兩種用途:

(1)在類的構(gòu)造函數(shù)中用于調(diào)用類的另一個構(gòu)造函數(shù)this()或this(…)(2)

在類的構(gòu)造函數(shù)或非靜態(tài)方法中作為對當(dāng)前對象本身的引用classBody{…….Body(){idNum=nextID++;}Body(Stringname){=name;idNum=nextID++;}}classBody{…….

Body(){idNum=nextID++;}Body(Stringname){this();=name;}}InitializationBlock(初始化塊)初始化塊使用花括號對“{、}”包含的一系列語句,初始化塊一般聲明在類的構(gòu)造函數(shù)之前在創(chuàng)建對象時,初始化塊中的語句將在類的構(gòu)造函數(shù)調(diào)用前被執(zhí)行初始化塊中可以拋出可檢查性異常,只要該異常在構(gòu)造函數(shù)的異常列表中被聲明classBody{publiclongidNum;publicStringname=“<unnamed>”;publicBodyorbits=null;publicstaticlongnextID=0;{idNum=nextID++;}Body(Stringname){=name;}}StaticInitializationBlock

(靜態(tài)初始化塊)被聲明為static的初始化塊,稱為靜態(tài)初始化塊或靜態(tài)初始化器(StaticInitializer)靜態(tài)初始化塊中的語句只能訪問類的靜態(tài)域,并且不能拋出任何異常在類被類裝載器(ClassLoader)第一次加載的過程將執(zhí)行靜態(tài)初始化塊中的語句,以后將不再被執(zhí)行靜態(tài)初始化塊通常用于初始化類的命名常量和靜態(tài)域classPrimes{staticint[]knowPrimes=newint[4];static{knownPrimes[0]=2;for(inti=1;i<knownPrimes.length;i++)knownPrimes[i]=nextPrimes();}……}CreatingObjects(創(chuàng)建對象)類的對象,又稱為類的實例,一般通過使用保留字new和類的構(gòu)造函數(shù)來創(chuàng)建

Bodyunnamed=newBody();Bodyearth=newBody(“Earth”);使用new創(chuàng)建對象的過程中可能啟動垃圾收集,如果JVM發(fā)現(xiàn)垃圾收集后仍沒有足夠的內(nèi)容來創(chuàng)建對象,將拋出OutOfMemberyError錯誤AccessObjectFields(訪問對象的域)在對象被創(chuàng)建后,就可以通過對象的引用(objectreference)來訪問對象的域?qū)ο蟮挠蚝皖惖挠?,都是通過句點“.”來訪問

Bodyearth=newBody(“Earth”);earth.idNum=Body.nextID;System.out.println();Methods(方法)方法是語句的結(jié)合,方法中的語句可以訪問和修改類或類的對象中域,也可以使用域存放的數(shù)據(jù)進行復(fù)雜的計算方法體現(xiàn)了OOP中嚴(yán)格區(qū)分“做什么”和“怎么做”的思想方法(特別是public方法)又被看作是類的設(shè)計者和類的使用者之間的契約(contract)DeclaringMethods(聲明方法)方法位于類體中,方法聲明由方法頭和方法體兩部分構(gòu)成,方法頭中要聲明方法的返回類型和方法可能跑出的異常列表

<修飾符><返回類型><方法名>(<參數(shù)列表>)<異常列表>{/*…方法體…*/}如果方法頭中聲明的返回類型不是void,則方法體結(jié)束時必須通過return語言返回執(zhí)行結(jié)果classBodyPrint{publicstaticvoidmain(String[]args){Bodysun=newBody(“Sun”);Bodyearth=newBody(“Earth”);earth.orbits=sun;System.out.println(“Body”++“orbits”+)}}javaBodyPrintBodyEarthorbitsSun方法頭方法體MethodModifiers(方法的修飾符)方法可使用一下修飾符:

訪問控制修飾符

與域相同

abstract

聲明為abstract的方法沒有方法體,一般定義在抽象類中,被子類實現(xiàn)

static

聲明為static的方法是類的方法,否則為對象的方法

final

聲明為final的方法不能被子類覆蓋(overridden)

synchronized—

當(dāng)方法可能被多個線程,為了保持對象狀態(tài)的一致性,可以通過synchronized來控制線程對方法的訪問

native

聲明為native的方法,又稱為本地方法,這種方法通常由其它語言實現(xiàn)

strictfp

與類相同AccessControl(方法的訪問控制)通過訪問控制修飾符(accessmodifiers)可以限制方法在類或?qū)ο笸獠康目梢娦?/p>

public

共有的,方法在任何地方都可以通過類或類的對象調(diào)用

protected

受保護的,方法僅在類體中、子類類體中或同包的其它類類體中可調(diào)用

private

私有的,方法僅在類體中可調(diào)用

package

默認(rèn)的,沒有任何訪問修飾符修飾的方法,僅在類體中、同包的其它類類體中可調(diào)用InvokingMethods(調(diào)用方法)對于static方法,可以通過“類名.方法”調(diào)用

System.gc()對于對象的方法,在對象被創(chuàng)建后,可以通過“對象的引用.方法”調(diào)用

System.out.println(…);classBody{

……publicStringtoString(){return“Body”+name;}publicstaticvoidmain(String[]args){Bodyearth=newBody(“Earth”);

System.out.println(earth);}}javaBodyBodyEarthMethodExecution(方法的執(zhí)行)方法被調(diào)用后,執(zhí)行的結(jié)果可能有以下幾種:

(1)通過return語句返回結(jié)果

(2)執(zhí)行到最后一條語句,自動結(jié)束

(3)拋出未捕獲的異常publicclassPermissions{publicbooleancanDeposit,canWithdraw,canClose;}publicclassBankAccount{privatelongnumber;privatelongbalance;publicPermissionspermissionsFor(Personwho){Permissionsperm=newPermissions();perm.canDeposit=canDeposit(who);perm.canWithdraw=canWithdraw(who);perm.canClose=canClose(who);returnperm;}……}方法的參數(shù)傳遞方法調(diào)用時參數(shù)值的傳遞可以分為“值傳遞”和“引用傳遞”兩種值傳遞—當(dāng)方法的參數(shù)為基本數(shù)據(jù)類型時,實參的值被復(fù)制給形參,改變形參不會影響實參的值引用傳遞—當(dāng)方法的參數(shù)為對象引用時,實參和形參都同時引用了同一對象,通過形參修改對象的狀態(tài)后會影響對象的其它引用classPassByValue{publicstaticvoidmain(String[]args){doubleone=1.0;System.out.println(“before:one=”+one);halveIt(one);System.out.println(“after:one=”+one);}publicstaticvoidhalveIt(doublearg){arg=arg/2.0;System.out.println(“havled:arg=”+arg);}}javaPassByValuebeforeone=1.0halvedarg=0.5afterone=1.0classPassRef{publicstaticvoidmain(String[]args){Bodysirius=newBody(“Sirius”);//天狼星

System.out.println(“before:”+);commonName(sirius);System.out.println(“before:”+);}publicstaticvoidcommonName(BodybodyRef){bodyR=“DogStar”;bodyRef=null;}}javaPassRefbefore:Siriusafter:DogStarOverloadingMethods(方法重載)方法的簽名(signature):聲明方法的方法頭中方法名加上方法的參數(shù)列表類體中不能聲明簽名完全相同的兩個方法當(dāng)兩個方法具有相同的方法名,但有不同數(shù)量或類型的參數(shù),而導(dǎo)致不同的方法簽名時,稱這兩個方法互相重載

System.out.println(“earth”);System.out.println(100);System.out.println(newBody(“Sun”));main方法main方法必須聲明為以下格式:

publicstaticvoidmain(String[]args){…}main方法是程序執(zhí)行時第一個被執(zhí)行的方法以main方法作為執(zhí)行起點的Java程序又稱為JavaApplicationArrayVariables(數(shù)組變量)數(shù)組是多個數(shù)據(jù)元素的有限有序集合,元素的類型可以是基本數(shù)據(jù)類型或?qū)ο笠?,可以隨機訪問數(shù)組中的元素在Java語言中,數(shù)組是以對象的形式存在DeclaringArrays(聲明數(shù)組)數(shù)組類型是在基本數(shù)據(jù)類型名或者類類型后面加上方括號對“[]”表示,數(shù)組成員為方括號前的基本數(shù)據(jù)類型或類的對象引用,聲明數(shù)組變量的語法如下:一維數(shù)組<修飾符>

<類型名>[]<變量名>;

<修飾符>

<類型名><變量名>[];

二維或多維<修飾符>

<類型名>[]…[]<變量名>;

<修飾符>

<類型名><變量名>[]…[];int[]numbers;String[]names;int[][]matrix;注意:請盡量不聲明二維以上的數(shù)組變量AccessingArrays(訪問數(shù)組)數(shù)組對象有一個整型的域length,它的值表示數(shù)組的長度

System.out.println(numbers.length);數(shù)組中的元素通過下面的形式訪問:

<數(shù)組變量名>[元素序數(shù)]

(0≤元素序數(shù)<數(shù)組長度)System.out.println(numbers[0]);numbers[numbers.length-1]=10;ArrayModifiers(數(shù)組變量的修飾符)數(shù)組變量在使用上與一般的變量相同,可以作為類的域,也可以作為局部變量或參數(shù)變量當(dāng)保留字final修飾數(shù)組變量時,數(shù)組變量只能被初始化一次,但數(shù)組成員仍然可以修改,無法將數(shù)組成員為final或volatilefinalint[]numbers={1,2,3};numbers={3,4,5};numbers[0]=3;numbers[1]=4;numbers[2]=5;錯誤正確ArrayInitialization(數(shù)組初始化)數(shù)組變量如果作為類的域,則默認(rèn)的初始值為null,如果作為構(gòu)造函數(shù)、方法的局部變量或參數(shù)變量,則必須首先初始化數(shù)組變量的初始化可以分為三種形式:初始化為null、隱式初始化或顯式初始化對于暫時不引用任何數(shù)組對象的數(shù)組變量可以將其初始化為null

int[]numbers=null;ArrayInitialization(數(shù)組初始化)隱式初始化時,數(shù)組中每個元素的值為所屬數(shù)據(jù)類型的默認(rèn)值,對象引用類型為null,隱式初始化采用以下語法:

<類型名>[]<變量名>=new<類型名>[長度]<類型名><變量名>[]=new<類型名>[長度]如果數(shù)組是多維數(shù)組,則必須在初始化時確定第一維的長度int[]numbers=newint[10];String[]names=newString[5];int[][]matrixA=newint[5][5];int[][]matrixB=newint[5][];ArrayInitialization(數(shù)組初始化)顯式初始化可以分為三種形式:

(1)在隱式初始化后,通過遍歷數(shù)組,為數(shù)組中的每一個元素賦值

(2)在聲明數(shù)組變量時,將包含各個元素值的花括號對“{…}”作為初始值,括號中的各元素值用逗號隔開

(3)創(chuàng)建匿名數(shù)組(AnonymousArray),作為數(shù)組變量的初始值或?qū)?shù)組變量重新賦值int[]numbers=newint[10];for(inti=0;i<numbers.length;i++)numbers[i]=i;String[]names=newString[3];names[0]=“Zhang”;names[1]=“Wang”;names[2]=“Li”;int[]numbers={0,1,2,3,4,5,6,7,8,9}String[]names={“Zhang”,“Wang”,“Li”}int[]numbers=newint[]{0,1,2,3,4,5,6,7,8,9};String[]names=newString[3];names=newString[]{“Zhang”,“Wang”,“Li”};ArraysofArrays(數(shù)組的數(shù)組)由于數(shù)組的元素可以是對象引用,而數(shù)組本身是對象,因此N(N≥2)維數(shù)組又可以看作為X(X<N)維數(shù)組,數(shù)組的每個元素是N-X維數(shù)組對于多維數(shù)組N[x][y]…[z],對于已確定長度的維,可以通過N[x][y]…[m]的形式訪問該維所對應(yīng)的數(shù)組元素float[][]mat=newfloat[4][];for(inti=0;i<mat.length;i++)

mat[i]=newfloat[4];float[]vector0=mat[0];0123matmat.length0123012301230123mat[0]mat[1]mat[2]mat[3]mat[0].lengthArraysofArrays(數(shù)組的數(shù)組)在Java語言中,多維數(shù)組某一維上所對應(yīng)的各個數(shù)組元素的長度可以不相同float[][]mat=newfloat[4][];for(inti=0;i<mat.length;i++)mat[i]=newfloat[i+1];float[]vector2=mat[1];0123matmat.length0010120123mat[0]mat[1](vector2)mat[2]mat[3]ArraysofArrays(數(shù)組的數(shù)組)在聲明多維數(shù)組變量時,可將包含各個子數(shù)組元素的花括號對“{…}”作為初始值,括號中的各個子數(shù)組元素用逗號隔開float[][]pascalsTriangle={{1},{1,1},{1,2,1},{1,3,3,1},{1,4,6,4,1}};float[]vector2=pascalsTriangle[1];//vector2={1,1}String(字符串類)Java語言中用java.lang.String類來表示字符串?dāng)?shù)據(jù),同時String類也提供了許多與字符串操作相關(guān)的方法在Java語言中,字符串是由多個Unicode字符組成的序列,在String類的內(nèi)部使用了一個char[]數(shù)組來存放字符串中的字符String類的構(gòu)造函數(shù)

String()String(Stringoriginal)String(char[]value)String(char[]value,intoffset,intcount)

String(byte[]bytes)String(byte[]bytes,intoffset,intcount)String(byte[]bytes,Stringcharset)String(byte[]bytes,intoffset,intcount,Stringcharset)

String(StringBufferbuffer)String()

構(gòu)造函數(shù)默認(rèn)函數(shù)String()用于創(chuàng)建一個不包含任何字符的空串

Stringempty=newString();

等價于使用直接量“”初始化字符串

Stringempty=“”;String(Stringoriginal)

構(gòu)造函數(shù)構(gòu)造函數(shù)String(Stringoriginal)創(chuàng)建的字符串對象具有與作為參數(shù)傳入的字符串對象相同的字符序列,該構(gòu)造函數(shù)又稱為“拷貝構(gòu)造函數(shù)”由于字符串對象創(chuàng)建后其值不可改變,失去了該拷貝構(gòu)造函數(shù)的意義,因此該盡量避免使用該構(gòu)造函數(shù)StringandcharArrays由于String類內(nèi)部使用char[]數(shù)組來存放字符串中的字符,因此String類與char[]數(shù)組之間可以互相轉(zhuǎn)換通過構(gòu)造函數(shù)String(char[])或String(char[],int,int)可以由char[]數(shù)組創(chuàng)建字符串對象String類的length()方法,返回的是String類內(nèi)部char[]數(shù)組的長度,也就是字符串的長度String類也提供了許多與char相關(guān)的方法char[]chars={‘g’,’o’,’o’,’d’};StringgoodString=newString(chars);StringgoString=newString(chars,0,2);System.out.println(goodString);System.out.println(goString);goodgocharcharAt(intindex)voidgetChars(intsrcBegin,intsrcEnd,char[]dst,intdstBegin)char[]toCharArray()Stringreplace(charoldChar,charnewChar)intindexOf(intch)intindexOf(intch,intfromIndex)intlastIndexOf(intch)intlastIndexOf(intch,intfromIndex)staticStringcopyValueOf(char[]data)StringandbyteArrays16位Unicode字符數(shù)據(jù)序列可以根據(jù)一定的字符編碼(characterencoding)規(guī)則轉(zhuǎn)換為8位的字節(jié)數(shù)據(jù)序列JVM必須支持的字符編碼有

US-ASCII、ISO-8859-1、UTF-8、UTF-16UTF-16BE、UTF-16LE中文字符編碼有GB2312、GBK或Big5字符串中的字符c根據(jù)“UTF-8編碼”轉(zhuǎn)換為字節(jié)序列的編碼方式如下:如果c∈

[\u0001,\u007f],則直接將c轉(zhuǎn)換為一個字節(jié)

(byte)c如果c∈[\u0080,\u07ff]或c=\u0000,則將c轉(zhuǎn)換為兩個字節(jié)

(byte)(0xc0|(0x1f&(c>>6)))(byte)(0x80|(0x3f&c))

如果c∈[\u0800,\uffff],則將c轉(zhuǎn)換為三個字節(jié)

(byte)(0xe0|(0x0f&(c>>12)))(byte)(0x80|(0x3f&(c>>6)))(byte)(0x80|(0x3f&c))

StringandbyteArrays通過構(gòu)造函數(shù)String(byte[])、String(byte[],int,int)或String(byte[],String)、String(byte[],int,int,String)可以由byte[]數(shù)組創(chuàng)建字符串對象,前兩個構(gòu)造函數(shù)使用當(dāng)前操作系統(tǒng)默認(rèn)的字符編碼將byte[]數(shù)組轉(zhuǎn)換為char[]數(shù)組,后兩個構(gòu)造函數(shù)使用指定的字符編碼進行轉(zhuǎn)換String類還提供了兩個與byte[]數(shù)組相關(guān)的方法:

byte[]getBytes()byte[]getBytes(Stringcharset)byte[]bytes={49,50,51,43,52,53,54,61,53,55,57};Stringexp=newString(bytes,“US-ASCII”);System.out.println(exp);123+456=579StringComparisons(字符串比較)當(dāng)判等號“==”一般用于比較兩個基本數(shù)據(jù)類型的變量的值是否相等,當(dāng)判等號“==”比較兩個對象引用變量時,如果兩個變量引用了同一個對象則結(jié)果為true,否則為false要對兩個String對象進行比較,應(yīng)該使用以下方法:

booleanequals(ObjectotherString)booleanequalsIgnoreCase(StringotherString)Stringstr1=newString(“good”);Stringstr2=newString(“good”);booleanb1=str1==str2;Stringstr3=“good”;Stringstr4=“good”;booleanb2=str3==str4;b1=?falseb2=?trueStringstr1=newString(“good”);Stringstr2=newString(“good”);booleanb1=str1.equals(str2);Stringstr3=“good”;Stringstr4=“good”;booleanb2=str3.equals(str4);b1==trueb2==trueStringComparisons(字符串比較)String類提供了以下兩個方法對字符串進行排序比較:

intcompareTo(Stringother)intcompareToIgnoreCase(Stringother)如果返回正數(shù),則表示被調(diào)用方法的字符串對象應(yīng)排在傳入的參數(shù)字符串之前,如果返回負(fù)數(shù),則表示被調(diào)用方法的字符串對象應(yīng)排在傳入的參數(shù)字符串之后,如果返回零,則表示兩個字符串的字符完全相等,排列不分先后String[]table;……publicintposition(Stringkey){intlo=0,hi=table.length-1;while(lo<=hi){intmid=lo+(hi-lo)/2intcmp=pareTo(table[mid]);if(cmp==0)returnmid;elseif(cmp<0)hi=mid-1;elselo=mid+1;}return-1;}SubstringOperations(子串操作)String類提供了以下兩個取子串的方法:

Stringsubstring(intbeginIndex)Stringsubstring(intbeginIndex,intendIndex)Stringwords=“goodmorning”;Stringsub1=words.substring(5);Stringsub2=words.substring(0,4);System.out.println(sub1);System.out.println(sub2);morninggoodSubstringOperations(子串操作)String類提供了許多與子串匹配相關(guān)的方法

booleanregionMatches(intstart,Stringother,intostart,intcount)booleanregionMatches(booleanignoreCase,intstart,Stringother,intostart,intcount)booleanstartsWith(Stringprefix)booleanstartsWith(Stringprefix,intstart)booleanendsWith(Stringsuffix)ClassRegionMatch{publicstaticvoidmain(String[]args){Stringstr=“Look,look!”;booleanb1,b2,b3;b1=str.regionMatches(6,“Look”,0,4);b2=str.regionMatches(true,6,“Look”,0,4);b3=str.regionMatches(true,6,“Look”,0,5);System.out.println(“b1=”+b1);System.out.println(“b2”=+b2);System.out.println(“b3=”+b3);}}b1=falseb2=trueb3=false字符串與基本數(shù)據(jù)類型間的轉(zhuǎn)換String類提供了以下靜態(tài)方法獲得其它基本數(shù)據(jù)類型值的字符串表示:

staticStringvalueOf(boolean)staticStringvalueOf(char)staticStringvalueOf(float)staticStringvalueOf(double)staticStringvalueOf(int)staticStringvalueOf(long)staticStringvalueOf(Object)字符串與基本數(shù)據(jù)類型間的轉(zhuǎn)換除Boolean類外,每個包裝器類都提供了一個靜態(tài)方法parseXXX,將字符串對象轉(zhuǎn)換為對應(yīng)的基本數(shù)據(jù)類型值

byteByte.parseByte(String)intInteger.parseInt(String)longLong.parseLong(String)floatFloat.parseFloat(String)doubleDouble.parseDouble(String)

newBoolean(String).booleanValue()String類的其它方法Stringconcat(String)Stringtrim()StringtoLowerCase()StringtoUpperCase()StringtoLowerCase(Locale)StringtoUpperCase(Locale)關(guān)于String類的所有方法的詳細用法請查閱Sun公司的JavaAPI

使用幫助文檔StringBuffer(字符串緩沖類)String類的對象創(chuàng)建后其包含的字符序列不可變,對多個String類直接量進行連接操作會創(chuàng)建多個臨時的String類對象StringBuffer類的對象提供了一個字符序列的暫存空間,可以對該對象中包含的字符序列進行增、刪、改等操作而無需創(chuàng)建新的String類對象,并提供方法返回最終的字符串,一般用于涉及多個字符串連接的操作publicstaticStringguillemete(Stringquote){return‘<<’+quote+‘>>’;}returnString.valueOf(‘<<’).concat(quote).concat(String.valueOf(‘>>’))編譯StringBuffer類的構(gòu)造函數(shù)StringBuffer()StringBu

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論