版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章Java概述Java概述21.1.1Java的誕生前身:OAK(JamesGosling1990)Java大事記90年,Sun公司開始Green工程93年,WWW席捲全球94年,開始定位於Internet95.1,Java命名Hotjava,第一個支持Java的流覽器
Netscape2.0Java概述31.1.2Java的發展發展:面向網路應用,類庫不斷豐富,性能不斷提高,應用領域不斷拓展。1995.5.23Java誕生(Java1.0.2API)1997.2.18JDK1.1VJ++6.0、cafe、JBuilder….支持1998.12JDK1.2 (Java2SDKv1.2StandardEdition)網址(查詢新動向)Java概述4Java的發展Java版本與Java開發環境的關係Java1.2開始,JDK更名為SDKJDK1.2開發Java1.2,JDK1.3開發Java1.3,JDK1.4開發Java1.4Java1.x統稱為Java2程式JDK1.5Java概述5Java2.0開始,JDK分為三個版本J2EE(企業級版本)J2SE(標準版本)J2ME(微型版本)1.1.3Java的現狀與應用J2MEJava概述61.2.1Java是什麼Asimple,object-oriented,distributed,interpreted,robust,secure,architecture-neutral,portable,high-
performance,multi-threaded,dynamiclanguage.一种OOP語言一個平臺(JVM和JavaAPI)Java概述71.2.2Java的特點Java=“C++”–“複雜性和奇異性”+“安全性和可移植性”Java概述8Java的特點面向對象完全基於類、對象:OOA,OOD,OOP以類的形式組織代碼,數據類型封裝、繼承、多態Java概述9Java的特點簡單:Java最初是為家用電器進行集成控制而設計的一種語言,因此它必須簡單明瞭。其簡單性主要體現在三個方面。C++like摒棄了C++中容易引發程式錯誤的一些特性,如指針、結構、枚舉等,並能進行自動記憶體管理。提供了豐富的類庫Java概述10Java的特點分佈式健壯性(魯棒性)檢查數據類型的匹配,數組下標越界不支持指針,保護記憶體數據、程式自動記憶體管理,碎片收集(垃圾回收機制)例外控制機制,正確處理運行時錯誤安全性刪除指針和釋放記憶體等C++功能Java的安全體系架構Java概述11Java的特點解釋執行結構中立:位元組碼與電腦結構無關可移植語言規範避免了與具體實現有關的描述多線程:支持多任務高效:JIT(Just-In-Time)及時編譯器動態:可動態增加和修改類庫內容Java概述121.3Java與C/C++的區別1.全局變數2.條件轉移指令3.指針4.記憶體管理5.數據類型的一致性6.類型轉換7.頭檔8.編譯預處理Java概述139.結構體和共用體10.常量11.多重繼承12.異常處理13.面向對象程式設計Java概述141.4.1Java的工作原理Java平臺的兩個組件JavaVM是Java平臺的基礎JavaAPI是預先建立的軟體組件的集合,提供豐富的功能,如GUI部件。JavaAPI被分為相關類和介面的庫,這些庫稱為包(package)Java概述15JavaAPI和JavaVM將程式與硬體分離從而實現跨平臺功能JavaJava概述16Java虛擬機Java虛擬機(JVM)Java處理器“晶片”,一般由軟體實現Java虛擬機類裝入器位元組碼驗證器解釋器位元組碼執行Java概述17問:JVM是不是跨平臺的?不是,不同的平臺分別設計不同的JVM。Java位元組碼沒有保存特定平臺的資訊。Java概述18Java的工作方式檔類型.java Java原始檔案.class 二進位位元組碼檔運行機制對於大多數語言,要運行程式,要麼編譯程序要麼解釋程式;而Java語言的程式則既要被編譯又要被解釋。Java概述19Java的工作方式
編譯程序將Java根源程式翻譯為位元組碼(bytecode)程式;解釋程式Java虛擬機分析並運行位元組碼程式。一次編寫,處處運行Writeonce,runanywhere!Java概述20用Java根源程式先被編譯、後被解釋Java概述211.4.2Java的運行系統Java的運行系統是各平臺廠商對JVM的具體實現。對於Java中的兩類程式:JavaApplication(Java應用程式)和JavaApplet(Java小應用程式),存在兩種不同類型的運行系統;對於JavaApplication,運行系統是Java解釋器;而對於JavaApplet,運行系統是指Java相容的Web流覽器,該流覽器中包含了支持Applet運行的環境。Java概述221.5.1JAVA開發工具JDK系列(Sun)命令行JavaWorkShop(Sun)
SymanteeCAFÉJCreatorJBuilder(Borland)VisualJ++(MicroSoft)JavaStudio(Sun)VisualAgeforJava(IBM)OPTIONALJava概述231.5.2JDK下載與安裝 為了鼓勵使用Java語言開發軟體,SunMicrosystems公司提供了免費的軟體開發工具包(SDK),其中包括編譯器、虛擬機、調試器等開發工具,稱為Java開發工具包或JDK。
JDK(可從下載)jdk-1_5_0_08-windows-i586-pjdk-1_5_2-doc.zipJava概述24Java2SDKJava概述25安裝JDK後產生如下目錄結構:\bin目錄:Java開發工具,包括Java編譯器、解釋器等\demo目錄:一些實例程式\lib目錄:Java開發類庫\jre目錄:Java運行環境,包括Java虛擬機、運行類庫等…Java概述26JDK實用程式javacJava編譯器,將Java根源程式編譯成位元組碼javaJava解釋器,直接從類檔執行Java應用程式,即applicationappletviewer小程式流覽器,執行html檔上的Java小程式,即AppletJava概述27設置環境變數:
PATH=e:\jdk1.5.0_08\bin;CLASSPATH=.;Java概述281.6簡單的Java程式Java程式分兩種:
Java應用程式(JavaApplication)1.普通桌面應用2.伺服器端應用
Java小程式(JavaApplet)(由流覽器解釋執行)Java程式Java概述291.6.1Java應用程式Java程式//ThisprogramprintsWelcometoJava!publicclassWelcome{ publicstaticvoidmain(String[]args){System.out.println("WelcometoJava!");}}例1:Java概述30程式解析:1.java注釋分為以下三種:(1)單行注釋:從"//"開始到本行結束的內容都是注釋。(2)多行注釋:在"/*"和"*/"之間的所有內容都是注釋。(3)文檔注釋:在注釋方面java提供了一種C/C++所不具有的文檔注釋方式。在“/**”和“*/”之間的文本,將自動包含在用javadoc命令生成的HTML格式的文檔中。javadoc是JDK中API文檔生成器。該工具解析一組Java原始檔案中的聲明與文檔注釋,生成一組HTML頁面描述這些根源程式中定義的類、內部類、介面、構造方法、方法、屬性等。JDK的API文檔就是用javadoc工具生成的。2.Java語言區分大小寫,包括檔案名。Java概述313.關鍵字class用來聲明一個類,關鍵字public表示它是一個公共類,一個Java根源程式最多只能有一個公共類。類定義體由一對{}括起來。4.Java語言語句均以半角的分號;結尾。5.類體內包含變數和函數的定義,變數稱為類的“成員變數”,函數在Java語言中稱為“方法”。6.在該類中定義了一個main()方法,其中public表示訪問許可權,指明所有的類都可以使用這一方法。static指明該方法是一個類方法(又稱為靜態方法),它可以通過類名直接調用;void則指明main()方法不返回任何值。對於一個應用程式來說,main()方法是必需的,而且必須按照上述格式來定義。Java解釋器在沒有生成任何實例的情況下,以main()方法作為入口來執行程式。Java概述327.Java程式中可以定義多個類,每個類中可以定義多個方法,但是最多只能有一個公共類,main()方法也只能有一個。main()方法定義中,String[]args是傳遞給main()方法的參數,參數名為args,它是String類的一個實例,參數可以為一個或多個,多個參數間用逗號分隔。8.語句System.out.println(“WelcometoJava”);的作用是調用系統類庫中的System類的成員out的println()方法實現字串的輸出。與println()不同的是:print()方法在當前行輸出,而println()方法在新的一行輸出。Java概述339.java根源程式結構10.原始檔案的命名規則:如果在根源程式中包含有公共類的定義,則該原始檔案名必須與該公共類的名字完全一致,字母的大小寫都必須一樣。這是java語言的一個嚴格的規定,如果不遵守,在編譯時就會出錯。因此,在一個java根源程式中至多只能有一個公共類的定義。如果根源程式中不包含公共類的定義,則該檔案名可以任意取名。如果在一個根源程式中有多個類定義和介面定義,則在編譯時將為每個類生成一個.class檔。(每個介面編譯後也生成.class檔)Java概述34附:使用對話框輸出資訊也可使用JOptionPane的靜態方法進行人機交互。如showMessageDialog
方法輸出資訊。Java概述35根源程式importjavax.swing.JOptionPane;public
classWelcomeInMessageDialogBox{ public
static
voidmain(String[]args){ //使用對話框輸出資訊JOptionPane.showMessageDialog(null,"WelcometoJava!","DisplayMessage",JOptionPane.INFORMATION_MESSAGE);}}Java應用基礎362.1識別字、關鍵字Java語言使用國際字元集(Unicode)。Unicode字元集定義了一套國際標準字元集。通常的ASCII碼是8位的,而Unicode字元集中的每個字元占16位,即2個位元組,整個字元集共包括65336個字元,相容ASCII,排在Unicode字元集最前面的256個字元就是ASCII碼。Unicode除了可以表示256個ASCII碼外,還可以表示漢字、拉丁語、希臘字母、朝鮮語等。Java應用基礎372.1.1識別字識別字是賦予變數、類、方法、數組、檔等的名稱。Java語言規定識別字是以字母、下劃線“_”或美元符號“$”開始,隨後可跟數字、字母、下劃線或美元符號的字元序列。Java識別字大小寫敏感,沒有長度限制,可以為識別字取任意長度的名字,但關鍵字不能作為識別字。Java應用基礎38關於識別字為增強程式可讀性,Java作如下的約定:類、介面:通常使用名詞,且每個單詞的首字母要大寫方法:通常使用動詞,首字母小寫,其後用大寫字母分隔每個單詞常量:全部大寫,單詞之間用下劃線分隔變數:通常使用名詞,首字母小寫,其後大寫字母分隔每個單詞,避免使用$符號。例:下麵是合法的識別字:identifier thisone UserName User_name _system_varl $max下麵是不合法的識別字:8_value (不能以數字打頭)$book*c (不能包含非法字元*)Java應用基礎392.1.2關鍵字關鍵字是指對編譯器有特殊意義,在程式中不能用作其他目的的字元序列,關鍵字都是由小寫字母組成的。Java中的關鍵字:abstract boolean break byte
case
catch char class continue default do double else extends final finally float for if implements import instanceof int interface long native new null package private protected public return short static super switch synchronized this throw throws transient try void volatile whileJava應用基礎40關於關鍵字true和false不是關鍵字,類似地,對象值null也沒有列入關鍵字。但是不能把它們派作其他用途。還有些關鍵字,如cast、future、goto、generic、inner、operator、outer、rest、var等都是Java保留的沒有意義的關鍵字。Java應用基礎412.2基本數據類型數據類型規定一類數據的數據位長度,取值範圍,以及對該類數據所能進行的操作。Java數據類型分為基本數據類型和引用數據類型(引用類型又稱為組合類型)。Java語言定義了8種基本數據類型,其分類及關鍵字如下:整型:byte、short、int、long浮點型:float、double字元型:char布爾型:booleanJava應用基礎42表2.1Java中的基本數據類型Java應用基礎432.3常量、變數Java語言中存在著兩種表徵數據的形式:常量與變數。常量:程式運行過程中保持不變,並且不可進行修改的量。變數:用來存放數據且其值可以改變的量稱為變數。Java應用基礎442.3.1常量Java語言中常量有兩種類型:一種稱為直接常量也稱為值常量,如12、-33、15.6;有多種類型:1、2、3、4、5另一種稱為符號常量,符號常量需要明確定義。Java語言中使用關鍵字final來定義符號常量,如下所示:finaldoublePI=3.1415926;其中PI即符號常量。double是該符號常量的類型。注意:符號常量實質上是一種特殊的變數,也是佔用記憶體空間的,不同於C語言編譯預處理定義的宏。Java應用基礎451.整型常量(byte、short、int、long)整型常量可以用來給整型變數賦值,可以用十進位、八進制和十六進制來表示。(1)十進位整型常量由0至9的數字組成,沒有首碼,不能以0開始,沒有小數部分。例如:124,-36等。(2)八進制整型常量,以0為首碼,其後由0到7的數字組成,沒有小數部分。例如:0332,-0122等。(3)十六進制整型常量,以0x或0X為首碼,其後由0到9的數字和A到F(大小寫均可)字母組成,沒有小數部分。例如:0x3A,-0X43f等。Java應用基礎462.浮點型常量(float、double)浮點型常量有兩種表示方式:(1)十進位小數表示法,它是由整數部分和小數部分組成的。如:4.0,33.32等。小數點兩邊的數字不能同時省略且小數點不能省略。(2)科學計數法表示,它常用來表示很大或很小的數,如1.2×1026在Java中表示為1.2E26。表示方法是在小數表示法後加e(或E)及指數部分。但要注意,e(或E)前面必須有數字,指數部分可正可負,但都是整數(正號可省略)。例如,4.2E-5,3e6等。Java應用基礎473.布爾型常量boolean布爾型常量值只有true和false,true和false必須要小寫。true表示“邏輯真”,false表示“邏輯假”。注意,和C/C++語言不同,在Java語言中不能認為“非0值或1”是true,“0值”是false。Java應用基礎484.字元型常量Java中的字元採用Unicode字元集的編碼方案,是16位的無符號整數,占2個位元組,表示的字元從0~65535。Unicode字元集可以支持各類文字的字元。字元型常量分為一般字元常量和轉義字元常量。對於可輸入字元,用單引號將字元括起來,如‘a’,‘A’,‘我’等。對於不可輸入字元,採用轉義字元表示。Java應用基礎49表2.2轉義字元Java應用基礎505.字串常量字串並不是Java的基本數據類型,它是Java提供的位於java.lang包中的String類,字串常量就是字串類java.lang.String類的一個對象,故它可以使用類String中的方法,所有字串常量值都用雙引號括起來。需要注意的是null可以簡單視為一個引用類型的常量值,表示不引用任何對象。在Java編碼規範中,規定null是所謂null類型的唯一值,且規定null可轉換到任何引用類型。Java應用基礎512.3.2變數每個變數都要有個名字,變數名必須是合法的識別字,並且最好具有一定的意義,有意義的變數名可以提高程式的可讀性。比如,要定義一個表示學生數量的變數,用student_num做變數名要比用k更合適。所有變數在使用之前必須被定義,格式如下:數據類型關鍵字變數名[=初始值];Java應用基礎52例://x為基本整型intx;//y為浮點數(單精確度),並且賦給初始值3.14floaty=3.14;//可以在一個語句中聲明多個同一類型的變數longarea,width,length;Java應用基礎532.4運算符與運算式對各種類型的數據進行加工的過程稱為運算,表示各種不同運算的符號稱為運算符,參與運算的數據稱為運算元。運算符的優先順序與結合性如表所示。一個Java運算式是由運算元和運算符按一定的語法規則組成的符號序列。Java應用基礎54Java應用基礎552.4.1賦值運算符和賦值運算式1.賦值運算符Java中,“=”被稱為賦值運算符,它的作用是設置變數的值,即將一個數據賦給一個變數,實際上是將特定的值寫到變數所對應的記憶體單元中。賦值運算符是雙目運算符,因為“=”兩邊都要有運算元。“=”左邊是待賦值的變數,右邊是要賦的值。除了“=”基本賦值運算符外,另外還有幾個複合賦值運算符:+=、-=、*=、/=和%=;五個由位運算符和賦值運算符組成的複合賦值運算符:<<=、>>=、&=、|=、和^=。Java應用基礎562.賦值運算式我們可以用常量對變數賦值,也可以用變數對變數賦值,還可以用任何運算式對變數賦值。用賦值運算符連接起來的式子稱為賦值運算式。賦值運算式的值就是被賦值的變數的值。賦值運算式加上分號就構成了賦值語句,是極為常用的Java語句。示例:參看例2.3Java應用基礎572.4.2算術運算符和算術運算式1.算術運算符Java提供的算術運算符包括:加(+)、減(-)、乘(*)、除(/)和取餘(%)。算術運算符是雙目運算符。利用算術運算符連接起來的式子稱為算術運算式。2.自增、自減運算符++、--Java中還另外提供了兩個用於算術運算的單目運算符:自增運算符++和自減運算符--。其功能是使變數的值增1或減1。使用這兩個運算符,可以讓程式更為簡化、更容易閱讀。++和--運算符有一個特點,就是它們既可以位於變數名的左邊(稱為前自增、前自減),又可以位於變數名的右邊(後自增、後自減),但結果卻是不一樣的。++和—運算有以下四種情況:Java應用基礎58(1)i++:使用i之後,i的值加1,即先取值,後自加。等價於i=i+1。(2)++i:先使i加1,然後再使用i,即先自加,後取值。等價於i=i+1。(3)i--:使用i之後,i的值減1,即先取值,後自減。等價於i=i-1。(4)--i:先使i減1,然後再使用i,即先自減,後取值。等價於i=i-1。注意:++和--運算符只能用於變數,不能用於常量和運算式。因為++和--蘊含著賦值操作。++和--運算符經常用於迴圈程式設計中。Java應用基礎592.4.3關係運算符和關係運算式1.關係運算符關係運算符又稱比較運算符,因為關係運算實際上是比較大小的運算。Java提供了6種關係運算符:>、>=、<、<=、==、!=。前4種優先順序相同,且高於後面的兩種。2.關係運算式用關係運算符連接的式子稱為關係運算式。一般格式為:運算式1關係運算符運算式2關係運算式的值代表著某種關係的真假。比如,如果x的值是10,那麼,x>5的值是“真”,而x<1的值是“假”。Java應用基礎602.4.4邏輯運算符和邏輯運算式1.邏輯運算符Java提供了3種邏輯運算符,&&(與)、||(或)、!(非)。a&&b:只有a與b都為true,結果才為true,否則為false。a||b:只有a與b都為false,結果才為false,否則為true。!a:與a的值相反。2.邏輯運算式用邏輯運算符連接起來的式子稱為邏輯運算式,用於表示複雜的運算條件。Java應用基礎61有一點需要指出,在邏輯運算式求值的過程中,並不是所有的邏輯運算都被執行,即在Java中要進行所謂的短路計算。例如:(1)在求解a&&b&&c的值時,只有a的值是真時,才會計算b的值;只有a和b均為真時,才會計算c的值。如果a為假,則不會繼續計算b和c的值,因為整個運算式的值已經確定了。(2)在求解a||b||c的值時,只有a是假時,才會計算b的值;只有a和b均為假時,才會計算c的值。如果a是真,就不會計算b和c的值,因為整個運算式的值已經確定了。Java編譯程序按照“短路”計算方式來生成目標代碼。Java應用基礎622.4.5條件運算符和條件運算式條件運算符是Java提供的唯一一個三目運算符。用條件運算符連接起來的式子稱為條件運算式。條件運算式的格式是:運算式1?運算式2:運算式3條件運算式的運算規則如下:如果運算式1的值為真,那麼整個條件運算式的值就是運算式2的值,否則整個條件運算式的值是運算式3的值。例:
4>6?3:9//整個運算式的值為9Java應用基礎632.4.6位運算符和位運算式位運算符的作用在於對整數數值的二進位表示進行運算,像二進位的AND與OR等運算。(1)按位求反運算符~對運算元的二進位數據的每一個二進位位都取反,即1變成0,而0變成1。如~8的結果為-9。(2)位與運算符&參與運算的兩個運算元,相應的二進位數位進行位與運算。如5&11結果為1。(3)位或運算符|參與運算的兩個運算元,相應的二進位數位進行位或運算。如5|11結果為15。(4)位異或運算符^參與運算的兩個運算元,相應的二進位數位進行位異或運算。如5^11結果為14。Java應用基礎64(5)保留符號位的右移運算符>>將一個運算元的各個二進位位全部向右移若干位,這個位數由右運算元來決定,移到右端的低位被捨棄,左邊空出的位全部用最高位的符號位來填充。如5>>1結果為2。-9>>1,結果為-5。(6)不保留符號位的右移運算符>>>與>>不同的是,>>>右移後左邊空出的位用0填充。如5>>>1結果為2。-9>>>1,結果為2147483643。(7)左移運算符<<將一個運算元的所有二進位位向左移若干位,右邊空出的位填0。若高位左移後溢出,則捨棄溢出的數。如5<<1結果為10。Java應用基礎652.5流程控制語句程式控制可以定義為對程式語句的執行順序進行的規定。有三種結構:順序結構分支結構迴圈結構為了實現程式執行點的流程控制,Java提供了如下的分支、迴圈語句:分支控制語句包括:if-else、switch-case。迴圈控制語句包括:while、do-while和for。跳轉語句:break、return和continue。Java應用基礎66除了上面的流程控制語句,還有兩類特殊的語句:(1)異常處理語句:如try-catch-finally、throw等。參見第6章。(2)注釋語句。Java與C/C++之間的差別很細微,可歸納為兩點:(1)在C語言中,條件運算式可以是數值型,而在Java條件語句中,條件運算式必須是布爾型,不能是數值。(2)Java取消了對goto語句的支持。goto語句的使用一直是程式設計者爭論的話題,這是因為goto語句的使用不僅降低了程式的可讀性,而且往往會帶來一些不可預測的錯誤。Java應用基礎672.5.1順序結構順序結構是最簡單、最基本的結構,在順序結構內,順序執行各個語句。圖2.1表示了一個順序結構形式,從圖中可以看出它有一個入口a點,一個出口b點,在結構內A框和B框都是順序執行的處理框。Java應用基礎68空語句、運算式語句、複合語句是Java程式依次順序執行的語句,故又稱為順序結構。空語句是僅由分號構成的語句,表示什麼動作都不做。一個運算式加上一個分號就是一個運算式語句,只有少量的幾種運算式才能構成運算式語句。它們是:由賦值運算符構成的運算式、由++或--構成的運算式、方法調用、new運算式。標號語句的格式為:識別字:<語句>其中:<語句>可為任何合法的Java語句。複合語句是指由一對花括弧{}括起來的任意數量的語句,有時又稱為塊語句或組語句。示例:參看例2.4Java應用基礎692.5.2選擇結構1.if語句(1)簡單if語句if(布爾運算式){
語句(組);}其執行過程是:首先計算布爾運算式的值,若為真true,則執行塊內語句,否則,if語句終止執行,即不執行塊內語句而執行if語句後面的其他語句,如圖2.2(a)所示。示例:參看例2.5Java應用基礎70(2)if-else語句if(布爾運算式){
語句(組)A;}else{
語句(組)B;}其執行過程是:首先計算布爾運算式的值,若為真,則執行語句(組)A,否則執行語句(組)B,如圖2.2(b)所示。示例:參看例2.6Java應用基礎71(3)if語句的嵌套if語句中的任何一個子句可以是任意可執行語句,當然也可以是一條if語句,這種情況稱為if語句的嵌套。當出現if語句嵌套時,不管書寫格式如何,else都將與它前面最靠近的未曾配對的if語句相配對,構成一條完整的if語句。嵌套的深度沒有限制,if語句的嵌套可以實現多重選擇。示例:參看例2.7Java應用基礎722.switch語句switch語句是多分支選擇語句,又稱開關語句。
switch語句的一般形式如下:switch(運算式){case常量運算式1:
語句組1;break;case常量運算式2:
語句組2;break;
…case常量運算式n:
語句組n;break;default: 語句組n+1;
}Java應用基礎732.5.3迴圈結構迴圈結構是指在一定條件下反復執行一個程式塊的結構。迴圈結構也是只有一個入口,一個出口。根據迴圈條件的不同,迴圈結構分為當型迴圈結構和直到型迴圈結構兩種。Java應用基礎74當型迴圈的結構如圖2.5,其功能是:當給定的條件p成立時,執行A框操作,執行完A操作後,再判斷p條件是否成立,如果成立,再次執行A操作,如此重複執行A操作,直到判斷p條件不成立才停止迴圈。此時不執行A操作,而從出口b跳出迴圈結構。Java應用基礎75直到型迴圈的結構如圖2.6,其功能是,先執行A框操作,然後判斷給定條件p是否成立,如果成立,再次執行A操作;然後再對p進行判斷,如此反復,直到給定的p條件不成立為止。此時不再執行A框,從出口b跳出迴圈。Java應用基礎76Java語言中,實現迴圈結構的控制語句有while、do~while、for語句。1.while迴圈while語句用來實現“當型”迴圈結構,即先判斷運算式,後執行語句。其一般形式如下:while(迴圈條件){語句;//循環體}示例:參看例2.10Java應用基礎772.do-while迴圈do-while語句用來實現“直到型”迴圈結構,即先執行循環體,然後判斷迴圈條件是否成立。其一般形式如下:do{
語句;//循環體}while(迴圈條件);示例:參看例2.11Java應用基礎783.for迴圈for語句是java語言中使用靈活方便的一種迴圈語句,它不僅用於迴圈次數已知的情況,還能用於迴圈次數預先不能確定只給出迴圈結束條件的情況。for語句的一般形式為:for(運算式1;運算式2;運算式3){語句;//循環體}示例:參看例2.12Java應用基礎794.break、continue、標號、return語句、System.exit()方法Java中可以用break和continue兩個迴圈跳轉語句進一步控制迴圈。這兩個語句的一般格式如下:break[label];//從所在的switch語句、迴圈語句中跳出。continue[label];//跳過循環體的剩餘語句,開始執行下一次迴圈。break和continue可以用在三種迴圈語句中的任意一種。這兩個語句都可以帶標號使用,也可以不帶標號使用。標號是出現在一個語句之前的識別字,標號後面要加一個冒號,定義如下:label:statement;示例:參看例2.13與2.14Java應用基礎80return語句和System.exit()方法return語句用來從當前方法中退出,返回到調用該方法的語句處,並從緊跟該語句的下一條語句繼續執行。如果在main()方法中執行return語句,則使程式執行返回到Java運行系統,因為Java運行系統調用了main()方法。要想從程式的任意地方直接一步到位地退出程式,而不是返回到調用該方法的語句處,可以使用System.exit()方法。Java應用基礎815.迴圈的嵌套一個循環體內包含另一個完整的迴圈結構稱為迴圈的嵌套,內嵌的迴圈中還可以嵌套迴圈,這就是多重迴圈。示例:參看例2.15與2.16(a)(b)(c)Java應用基礎822.6Java開發類庫組成Java提供了豐富的標準類來幫助程式設計者更方便快捷地編寫程式,這些標準類組成了類包,主要有:java.langjava.awtjava.appletjava.awt.imagejava.awt.peerjava.iojava.util除了java.lang之外,其餘類包都不是java語言所必須的。Java應用基礎831.java.lang本類包中包含了各種定義Java語言時必須的類,這些類能夠以其他類不能使用的方式訪問java的內部。任何java程式都將自動引入這個包。其中的類包括:Object類:java中最原始、最重要的類,每個java類都是它的子類,它實現了每個類都必須具有的基本方法。基本類型包裝器:Boolean,Character,Number,Double,Float,Integer,Long。String類:字串類。Math類:數學函數的集合。執行線程:類Thread,ThreadGroup,介面Runable。System類和Runtime類:可以通過類Runtime和System訪問外部系統環境。System類的兩個常用功能就是訪問標準輸入/輸出流和錯誤流、退出程式。異常和錯誤:類Exception,Error,介面Throwable。其他類:介面Cloneable、運行時的類等。Java應用基礎842.java.appletJavaApplet是Java編程的一個主要魅力,java.applet類包提供了Applet的運行機制以及一些編寫Applet非常有用的方法。3.java.awt本類包是各種窗口環境的統一介面(AWT代表AbstractWindowsToolkit,即抽象窗口工具包),其中的類使得創建諸如窗口、菜單、滾動條、文本區、按鈕以及複選框等圖形用戶介面(GUI)的元素變得非常容易。4.java.awt.image本類包能夠以獨立於設備的方式加載並過濾位圖圖像。5.java.awt.peerjava.awt.peer是全部awt組件的對等對象介面的集合,每個介面都提供了機器相關的基本方法,awt使用這些方法來實現GUI,而不必關心是何種機器或操作系統。Java應用基礎856.java.ioJava的輸入/輸出模式是完全建立在流的基礎之上的。流是一種位元組從一個地方到另一個地方的單向流動,可以把流附加於檔、管道和通信鏈路等。java.io類包中定義的許多種流類通過繼承的方式進行組織,其中也包括一些用來訪問本地檔系統上的檔流類。7.類包用來完成與網路相關的功能:URL、WWW連接以及更為通用的Socket網路通信。8.java.utiljava.util類包包含了一些實用類和有用的數據結構,如字典(Dictionary)、散列表(Hashtable)、堆疊(Stack)、向量(Vector)以及枚舉類(Enumeration)等,使用它們開發者可以更方便快捷地編程。Java應用基礎869.java.rmi包、java.rmi.registry包和java.rmi.server包這三個包用來實現RMl(remotemethodinvocation,遠程方法調用)功能。利用RMI功能,用戶程式可以在遠程電腦(伺服器)上創建對象,並在本地電腦(客戶機)上使用這個對象。10.java.sql包java.sql包是實現JDBC(Javadatabaseconnection)的類庫。利用這個包可以使Java程式具有訪問不同種類的資料庫(如Oracle,Sybase,DB2,SQLServer等)的功能,只要安裝了合適的驅動程式,同一個Java程式不需修改就可以存取、修改這些不同的資料庫中的數據。JDBC的這種功能,再加上Java程式本身具有的平臺無關性,大大拓寬了Java程式的應用範圍,尤其是商業應用的適用領域。類和對象873.1概述3.1.1對象(object)3.1.2類(class)3.1.3消息(message)3.1.4面向對象系統的特性1.抽象性(abstract) 2.封裝性(encapsulation)3.繼承性(inheritance)4.多態性(polymorphism)類和對象883.2類和對象的定義及使用進行Java程式設計,實際上就是定義類的過程。一個Java根源程式檔往往是由許多個類組成的。從用戶的角度看,Java根源程式中的類分為兩種:
1.系統定義的類,即Java類庫。基類:所有JAVA的類都派生自ObjectJava的類可組織在包(package)中Java提供的標準類庫分佈在一系列的包中,如java.lang,java.awt,等,jdk1.1後加入javax.swing等2.用戶自己定義的類。編程的過程就是繼承基類或標準類而創建、定義特殊子類的過程類和對象893.2.1類的定義Java中類包括成員變數和成員方法兩部分。類的成員變數可以是基本數據類型的數據或數組,也可以是一個類的實例;類的方法用於處理該類的數據。
1.類的定義格式:[類的修飾字]class類名稱[extends
父類名稱][implements
介面名稱列表]{變數定義及初始化;方法定義及方法體;}類體類和對象90類的修飾字:
[public|default(可缺省,非公開類)][abstract|final]public:允許其他類(沒有限制)訪問本類,一個原始檔案僅可以有一個public類,且與檔同名。default(缺省):可被當前包中的其他類訪問;如果定義時沒有public,則所有的類都是friendly;abstract:沒有實例的抽象概念類final:不能再被擴展,不包含子類的類;易於安全性的實現,或用於創建固定功能的類每個類都擁有自己的名字空間,即指類及其方法和變數可以在一定的範圍內知道彼此的存在,可以使用。父類繼承聲明:extends
父類名(見繼承)實現介面(interface):implements
介面名關於類定義的說明類和對象91例:定義圓類//Circle.javapublicclassCircle{privatedoubleradius=1;//圓的半徑
privatestaticintnumberOfObjects=0;//創建的圓的個數
//以半徑1創建一個圓,圓的個數加1
publicCircle(){numberOfObjects++;}//以半徑newRadius創建一個圓,圓的個數加1
publicCircle(doublenewRadius){radius=newRadius;numberOfObjects++;}類和對象92//獲取圓的半徑
publicdoublegetRadius(){returnradius;}//設置圓的半徑
publicvoidsetRadius(doublenewRadius){radius=(newRadius>=0)?newRadius:0;}//獲取圓的個數
publicstaticintgetNumberOfObjects(){returnnumberOfObjects;}//返回圓的面積
publicdoublefindArea(){returnradius*radius*3.14159;}}類和對象932.類定義中成員變數的聲明修飾符訪問控制符(訪問許可權)public:可被所有其他類引用protected:該類自身、子類、同一包中的其他類private:僅可被該類自身引用和修改,不能被其他任何類(包括子類)引用default(缺省):本包中的類[變數修飾字]變數數據類型變數名1,變數名2[=變數初值]…;[public|protected|private][static][final][transient][volatile]類和對象94static:類變數或類字段,對所有的實例一致,引用時首碼可使用類名或對象名,屬於類。final:數值不變常量,定義同時應對其進行初始化volatile:非同步控制修飾符,表示多個併發線程共用的變數,這使得各線程對該變數的訪問保持一致。transient:與對象序列化有關類和對象953.類定義中方法的聲明訪問控制符(許可權):public、private、protected、default(缺省)[方法修飾字]返回類型方法名稱(參數1,參數2,…)[throwsexceptionList]{…(statements;)//方法體:方法的內容}[public|protected|private][static][final|abstract][native][synchronized]類和對象96修飾符(Modifier):static:靜態方法,又稱類方法使用類名或對象名作為首碼,建議使用類名在方法體中只能使用static變數和static方法或訪問自己的局部變數abstract:只有介面沒有語句,要在子類中通過重新定義(override)來實現final:不能被重新定義(override)類和對象97throws:通告本方法中會產生的例外(異常)類型,提醒調用者要對相應的可能例外進行處理。當執行此方法併發生了例外時,程式會轉入調用者編制的例外處理程式段。類和對象983.2.2創建對象創建一個類,就創建了一種新的數據類型;聲明一個類的變數,就是聲明了該類的一個實例,即對象。創建對象包括聲明對象、實例化對象即為對象分配存儲空間兩步。1.聲明對象類名對象名表;例:Circle
circleOne,circleTwo;類和對象992.建立對象使用new運算符和類的構造方法為聲明的對象分配記憶體空間,如果類中沒有構造方法,系統會調用默認的無參構造方法。格式:對象名=new構造方法(形參列表);
例如:circleOne=newCircle();//此時circleOne引用被分配記憶體空間的其實地址circleTwo=newCircle(2.0);類和對象1003.2.3對象的使用在程式中創建對象的目的是使用對象。創建一個對象就要為對象的各個成員變數分配存儲空間。可以通過引用對象的成員來使用對象:對象數據成員的引用方式如下:對象名.數據成員名對象的成員方法的引用方式如下:對象名.成員方法名(實際參數表)示例:參看例3.1類和對象1013.2.4對象的清除。Java運行時系統通過垃圾自動回收機制週期性地釋放無用對象所使用的記憶體,完成垃圾的自動回收。當一個對象的引用為空時,該對象稱為一個無用對象。垃圾收集器以較低優先順序在系統空閒週期中執行,一次垃圾的收集速度比較慢,在某些情況下,我們也可以通過調用System類的gc()方法,即調用System.gc()顯示執行垃圾收集。類和對象1023.3實例變數、實例方法和類變數、類方法在類的數據成員和方法成員前用static關鍵字修飾的分別稱為類變數和類方法,也稱為靜態變數和靜態方法,非靜態的又分別稱為實例變數和實例方法。在生成每個類的實例對象時,Java運行時系統為每個對象分配一塊記憶體,然後可以通過對象引用變數來訪問這些對象的實例變數。不同對象的實例變數是不同的。類和對象1033.4this關鍵字關鍵字this用來指向當前對象或類的實例變數。如果局部變數與實例變數重名,則局部變數優先,同名的實例變數或類變數被隱藏。例: classTestThis{intday=1;voidsetDay(intday){
this.day=day;}}
類和對象1043.5包包(package)是Java提供的檔(即公共類)的組織方式。一個包對應一個檔夾,一個包中可以包括許多類檔。包中還可以再有子包,稱為包等級。包的作用有四個:(1)定位類:具有相似功能的類可以放置在同一個包中,這樣可以很容易地查找定位類。(2)避免命名衝突:在開發由其他程式員共用的可複用類時,會發生命名衝突,可以把類放在不同包中,通過包名引用類可以避免命名衝突。(3)可以方便地分發軟體。(4)控制類之間的訪問(參見第4章訪問控制)。注意:包是一個類名空間,同一個包中的類和介面(參見第4章)不能重名,不同包中的類可以重名。類和對象1053.5.1創建包包的創建就是將根源程式檔中的介面和類納入指定的包。一般情況下,Java根源程式由四部分組成:(1)一個包(package)定義語句(可選項)。其作用是將本源檔中的介面和類納入指定包。原始檔案中若有包說明語句,必須是第一個語句;(2)若干個(import)語句(可選項)。其作用是引入本源檔中所需要使用的包;(3)一個public的類聲明。在一個原始檔案中只能有一個public類;(4)若干個屬於本包的類聲明(可選)。包的定義語句格式:package
包名;類和對象106例:packagepack1.pack2;創建包就是在當前檔夾下創建一個子檔夾,存放這個包中包含的所有類和介面的.class檔。packagepack1.pack2;語句中的符號“.”代表了目錄分隔符號,說明這個語句創建了兩個檔夾。第一個是當前檔夾下的子檔夾pack1;第二個是pack1下的子檔夾pack2,當前包中的所有類就存放在這個檔夾裏。類和對象1073.5.2設置類路徑包是一種組織代碼的有效手段,包名指出了程式中需要使用的.class檔的所在之處。另一個能指明.class檔所在的位置是環境變數CLASSPATH。在WindowsXP或Windows2000中可以通過設置“我的電腦”屬性來設置系統的環境變數。對於JavaApplication程式,還可以通過為Java解釋器設置參數來指定類檔路徑。例如,對於JDK中的Java解釋器java.exe,有開關參數-classpath;假設當需要解釋執行的test.class檔不在當前目錄而在e盤的TEMP目錄下時,可以使用如下的命令行語句:java-classpathe:\tempTest來運行這個程式。類和對象1083.5.3包的使用Java提供了豐富的標準類來幫助程式設計者更方便快捷地編寫程式,這些標準類組成了類包,主要有:java.langjava.awtjava.appletjava.awt.imagejava.awt.peerjava.iojava.util使用Swing組件進行GUI設計,使用javax.swing包中的類除了java.lang之外,其餘類包都不是java語言所必須的。若要使用,必須進行包的導入。類和對象109將類組織成包的目的是為了更好地利用包中的類。通常一個類只能引用與它在同一個包中的類。如果需要使用其他包中的public類,則可以使用如下的幾種方法。(1)在引入的類前加包名例如:pack1.pack2.Format.format(23.4533,2);
(2)用import關鍵字加載需要使用的類例如上面的語句在程式開始處增加了:
importpack1.pack2.Format;語句之後,就可以直接寫成:Format.format(23.4533,2);(3)用import關鍵字加載整個包importpack1.pack2.*;
類和對象1103.6內部類和匿名類3.6.1內部類一個類被嵌套定義於另一個類中,稱為內部類(InnerClasses)或內隱類,包含內部類的類稱為外部類。示例:參看例3.5類和對象1113.6.2匿名類有時在定義事件處理代碼時,由於代碼短小,不必再明確定義一個類,可使用匿名內部類。匿名內部類是final(最終)類,非static類,匿名內部類將類的聲明和創建類的實例一步完成。主要應用在事件處理的代碼編寫中。類和對象1123.7訪問控制和類的封裝性3.7.1訪問控制對類的成員變數和成員方法而言,其應用範圍可以通過施以一定的訪問許可權來限定。
同一個類中同一個包中不同包中的子類不同包中的非子類
private ★ default ★ ★ protected ★ ★ ★ public ★ ★ ★ ★ 繼承性和多態性1134.1繼承性類具有繼承性,子類對父類的繼承關係體現了現實世界中特殊和一般的關係。通過繼承可以更有效地組織程式結構,明確類間關係,並充分利用已有的類來完成更複雜、深入的開發。4.1.1派生類的定義Java中的所有類都是java.lang.Object類的子類。Java語言中派生類的定義格式如下:示例:參看例4.1class<子類>extends<唯一的父類名>{<類定義體>}繼承性和多態性1144.1.2super關鍵字1.數據成員的隱藏數據成員的隱藏是指在子類中重新定義一個與父類中已定義的數據成員名完全相同的數據成員,即子類擁有了兩個相同名字的數據成員,一個是繼承父類的,另一個是自己定義的。當子類要操作繼承自父類的同名數據成員時,可使用關鍵字super引導。2.成員方法的覆蓋子類可以重新定義與父類格式完全相同(包括方法名、方法形參的個數和類型、方法返回值的類型)的成員方法,實現對父類方法的覆蓋。繼承性和多態性115關於方法覆蓋只有當實例方法能被訪問時,才能進行方法覆蓋。私有方法不能被覆蓋.靜態方法(類方法)能被繼承,但不能被覆蓋。子類在重新定義父類已有的方法時,應保持與父類完全相同的方法名、返回值類型和參數列表,否則就不是方法的覆蓋,而是子類定義自己特有的方法,與父類的方法無關。繼承性和多態性1163.super關鍵字super表示的是當前對象的直接父類對象,是當前對象的直接父類對象的引用。super的使用方法有三種:(1)訪問直接父類隱藏的數據成員,其使用形式如下:super.數據成員(2)調用直接父類中被覆蓋的成員方法,其使用形式如下:super.成員方法(參數)(3)調用直接父類的構造方法,其使用形式如下:super(參數)示例:參看例4.2繼承性和多態性1174.1.3protected和final關鍵字1.protected關鍵字用protected修飾的成員變數可以被三種類所引:該類自身、與它在同一個包中的其他類及在其他包中的該類的子類。2.final關鍵字使用final關鍵字可以定義常量。定義類時,在class關鍵字前加關鍵字final,表示此類是最終類,不能被其他類繼承,不能做父類。用final修飾成員方法,表示此方法不能被它的子類覆蓋。繼承性和多態性1183.native關鍵字native修飾的方法稱為本地方法,此方法使用的目的是為了將其他語言(例如,C、C++、FORTRAN、彙編等)嵌入到Java語言中。這樣可以充分利用已經存在的其他語言的程式功能模組,避免重複編程。繼承性和多態性1194.2多態性多態是面向對象程式設計語言的一個重要特性,在Java中,可以在同一類或不同類中定義名稱相同但是操作不同的多個方法,多態性指的是運行時判斷應該執行哪個方法代碼的能力,這種能力也叫動態綁定。在Java語言中,多態性分為編譯時多態性和運行時多態性。編譯時的多態性是通過方法重載實現的,Java虛擬機根據傳遞給方法的參數個數和類型決定調用哪個重載方法。繼承性和多態性120運行時的多態性是Java多態性的最重要的體現,在Java語言的繼承關係中,子類對象與父類對象之間有一個重要特性:在任何需要父類對象的地方,都可以使用子類對象來代替,即子類對象可以作為父類對象來使用。一個對象可以通過引用子類的實例來調用子類的方法,通常,方法在父類中定義,在子類中覆蓋,子類中調用哪個方法是在運行時決定的,取決於對象的類型,稱為運行時的多態性。示例:參看例4.3繼承性和多態性1214.3抽象類和介面抽象類體現數據抽象的思想,是實現程式多態性的一種手段。介面則是Java中實現多重繼承的唯一途徑。4.3.1抽象類抽象類的作用在於將許多有關的類組織在一起,提供一個公共的類,即抽象類,而那些被它組織在一起的具體的類做為它的子類由它派生出來。定義一個抽象類的格式如下:abstractclassabstractClass{/*類定義體*/}抽象方法是指在返回值類型前加上abstract關鍵字,且沒有方法體。格式如下:abstract<返回值類型><抽象方法名>([<形式參數列表>]);示例:參看例4.4繼承性和多態性122對於抽象類與抽象方法的限制(1)凡是用abstract修飾符修飾的類被稱為抽象類。凡是用abstract修飾符修飾的成員方法被稱為抽象方法;(2)抽象類中可以有零個或多個抽象方法,也可以包含非抽象的方法;(3)抽象類中可以沒有抽象方法,但是,有抽象方法的類必須是抽象類;(4)對於抽象方法來說,在抽象類中只指定其方法名及其類型,而不書寫其實現代碼;(5)抽象類可以派生子類,在抽象類派生的子類中必須實現抽象類中定義的所有抽象方法;繼承性和多態性123(6)抽象類不能使用new運算符創建對象,但仍可在抽象類中定義構造方法,可由派生類的構造方法調用;(7)abstract和final不能同時修飾一個類;(8)abstract不能與private、static、final或native同時修飾一個方法;(9)abstract類中不能有private的數據成員或成員方法;(10)父類是非抽象類(即具體類),則其子類仍可是抽象類;(11)雖然不能創建抽象類的對象,但抽象類可以當作數據類型使用,如作為方法形參類型、返回值類型、數組元素類型等等。
繼承性和多態性1244.3.2
介面與C++不同,Java不支持多重繼承,而是用介面實現比多重繼承更強的功能。介面則把方法的定義和類的層次區分開來,通過它可以在運行時動態地定位所調用的方法。同時,介面可以實現“多重繼承”,且一個類可實現多個介面,正是這些機制使得介面提供了比多重繼承更簡單,更靈活,而且更強健的功能。介面就是方法定義和常量值的集合。從本質上講,介面是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有方法的實現。繼承性和多態性1251.聲明介面聲明介面的格式如下:[修飾符]interface介面名[extends父介面名列表]{常量數據成員聲明抽象方法聲明}其中:(1)interface是聲明介面的關鍵字,可以把它看成一個特殊類;(2)介面名要求符合Java識別字命名規則;(3)修飾符有兩種:public和默認。public修飾的介面是公共介面,可以被所有的類和介面使用;默認修飾符的介面只能被同一個包中的其他類和介面使用;繼承性和多態性126(4)父介面列表:介面也具有繼承性。定義一個介面時可以通過extends關鍵字聲明該介面是某個已經存在的父介面的派生介面,它將繼承父介面的所有屬性和方法。與類的繼承不同的是一個介面可以有一個以上的父介面,它們之間用逗號分隔;(5)常量數據成員聲明:常量數據成員前可以有也可省略修飾符。修飾符是publicstatic和fina1;介面中的數據成員都是用final修飾的常量,寫法如下:修飾符數據成員類型數據成員名=常量值或數據成員名=常量值例如:publicfinalstaticdoublePI=3.14159;//等價於doublePI=3.14159;intSUM=100;//等價於finalstaticintSUM=100;繼承性和多態性127(6)介面中沒有自身的構造方法,所有成員方法都是抽象方法;在介面中只能給出這些抽象方法的方法名、返回值和參數列表,而不能定義方法體,即僅僅規定了一組資訊交換、傳輸和處理的“介面”。格式如下:返回值類型方法名(參數列表);繼承性和多態性1282.介面的實現介面定義僅僅是實現某一特定功能的一組功能的對外介面和規範,而不能真正地實現這個功能,這個功能的真正實現是在“繼承”這個介面的各個類中完成的,要由這些類來具體定義介面中各抽象方法的方法體。一個類只能繼承一個父類,但是可實現多個介面。類定義的完整格式如下:[<修飾符>]class<類名>[extends<父類名>][implements<介面名1>,<介面名2>,……]{//類定義體}示例:參看例4.5繼承性和多態性129關於介面的實現(1)在類中,用implements關鍵字就可以調用介面。一個類可以調用多個介面,這時,在implements後用逗號隔開多個介面的名字;(2)如果實現某介面的類不是抽象類,則在類的定義體部分必須實現指定介面的所有抽象方法,即為所有抽象方法定義方法體,而且方法頭部分應該與介面中的定義完全一致,即有完全相同的返回值和參數列表;(3)如果實現某介面的類是抽象類,則它可以不實現該介面所有的方法。(4)介面的抽象方法的訪問限制符都己指定為public,所以類在實現方法時,必須顯式地使用public修飾符,否則編譯系統警告為縮小了介面中定義的方法的訪問控制範圍。繼承性和多態性1303.介面和抽象類的區別Java中所有的類有共同的父類java.lang.Object,但介面沒有共同的根。介面可以當作抽象類使用。它們的區別如下:(1)介面中的每個方法,沒有實現部分,都是抽象方法;抽象類中可以有具體的方法。(2)介面中的數據必須是常量;抽象類可以有各種類型的數據。(3)由於定義在介面中的所有方法都是抽象方法,介面中可以省略abstract修飾符;但是抽象類中的抽象方法必須用abstract修飾。繼承性和多態性1314.類型轉換和instanceof運算符基本數據類型可以進行強制或自動類型轉換,也可以把一個類的對象轉換為繼承鏈中的另一個對象。將子類的實例轉換
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024离婚协议要点及范本
- 2024石材矿山荒料资源整合与开发合同3篇
- 2025年度鸭苗繁育基地建设与运营管理合同3篇
- 2025年度船舶船员体检与健康保险合同3篇
- 二零二五年搬家物流运输合同样本6篇
- 2024版建设工程施工合同ef0203
- 二零二五年度房地产项目土地置换合同3篇
- 2025年草原生态保护与草原旅游开发一体化合同3篇
- 2024版深圳股权转让合同协议书范本
- 2025年度高空楼顶广告设计与施工一体化服务合同4篇
- 深圳2024-2025学年度四年级第一学期期末数学试题
- 中考语文复习说话要得体
- 《工商业储能柜技术规范》
- 华中师范大学教育技术学硕士研究生培养方案
- 医院医学伦理委员会章程
- xx单位政务云商用密码应用方案V2.0
- 风浪流耦合作用下锚泊式海上试验平台的水动力特性试验
- 高考英语语法专练定语从句含答案
- 有机农业种植技术操作手册
- 【教案】Unit+5+Fun+Clubs+大单元整体教学设计人教版(2024)七年级英语上册
- 2020年的中国海外工程示范营地申报材料及评分标准
评论
0/150
提交评论