Java程序設計教程與實驗課件_第1頁
Java程序設計教程與實驗課件_第2頁
Java程序設計教程與實驗課件_第3頁
Java程序設計教程與實驗課件_第4頁
Java程序設計教程與實驗課件_第5頁
已閱讀5頁,還剩470頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第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)單行注釋:從"http://"開始到本行結束的內容都是注釋。(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論