孫鑫JAVA無難事課件整理.ppt_第1頁
孫鑫JAVA無難事課件整理.ppt_第2頁
孫鑫JAVA無難事課件整理.ppt_第3頁
孫鑫JAVA無難事課件整理.ppt_第4頁
孫鑫JAVA無難事課件整理.ppt_第5頁
已閱讀5頁,還剩226頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、學(xué)習(xí)Java前的準(zhǔn)備工作,主講人:孫鑫, Download: ,相關(guān)概念,老師,什么是JDK??? 即Java Develop Kit,Java開發(fā)工具包。 老師,你們講的是Java1還是Java2? 1998年12月,SUN公司發(fā)布了JDK1.2,開始使用“Java 2” 這一名稱,目前我們已經(jīng)很少使用JDK1.1版本,所以我們所說的Java都是指Java2。J2SDK當(dāng)然就是Java 2 Software Develop Kit。 老師,什么是JRE? JRE(Java Runtime Environment),即Java運(yùn)行環(huán)境,通常已包含在J2SD

2、K中了。如果我們僅僅是為了運(yùn)行Java程序,而不是從事Java開發(fā),我們可以直接下載JRE,在我們的系統(tǒng)上安裝。, Download: ,Java的開發(fā)工具包(JDK),J2SE(Java 2 Platform, Standard Edition)標(biāo)準(zhǔn)版 J2EE(Java 2 Platform, Enterprise Edition)企業(yè)版 J2ME(Java 2 Platform, Micro Edition)精簡版, Download: ,J2SE v1.4.2相關(guān)下載,Java 2 Platform, St

3、andard Edition, v 1.4.2 J2SE v 1.4.2 Documentation Java Tutorial , Download: ,Java技術(shù)與應(yīng)用,主講人:孫鑫, Download: ,Java的起源,Java來自于Sun公司的一個(gè)叫Green的項(xiàng)目,其原先的目的是為家用消費(fèi)電子產(chǎn)品開發(fā)一個(gè)分布式代碼系統(tǒng),這樣我們可以把E-mail發(fā)給電冰箱、電視機(jī)等家用電器,對(duì)它們進(jìn)行控制,和它們進(jìn)行信息交流。開始,準(zhǔn)備采用C+,但C+太復(fù)雜,安全性差,最后基于C+開發(fā)了一種新的語言O(shè)ak(Java的

4、前身),Oak是一種用于網(wǎng)絡(luò)的精巧而安全的語言,Sun公司曾以此投標(biāo)一個(gè)交互式電視項(xiàng)目,但結(jié)果被SGI打敗。可憐的Oak幾乎無家可歸,恰巧這時(shí)Mark Ardreesen開發(fā)的Mosaic和Netscape啟發(fā)了Oak項(xiàng)目組成員,他們用Java編 制 了HotJava瀏 覽器,得到了Sun公司首席執(zhí)行官Scott McNealy的支持,觸發(fā)了Java進(jìn) 軍Internet。 Java的取名也有一則趣聞,有一天,幾 位Java成員組的會(huì)員正在討論給這個(gè)新的語言取什么名字,當(dāng)時(shí)他們正在咖啡館喝著Java(爪哇)咖 啡,有一個(gè)人靈機(jī)一動(dòng)說就叫Java怎 樣,得到了其他人的贊賞,于是,Java這個(gè)名字

5、就這樣傳開了。,Java的起源, Download: ,我們?yōu)槭裁匆肑ava,因?yàn)镴ava是 簡單的 面向?qū)ο蟮?健壯的 安全的 解釋的 與平臺(tái)無關(guān)的 多線程的 動(dòng)態(tài)的語言, Download: ,我們?yōu)槭裁匆肑ava,簡單的 Java最初是為對(duì)家用電器進(jìn)行集成控制而設(shè)計(jì)的一種語言,因此它必須簡單明了。Java語言的簡單性主要體現(xiàn)在三個(gè)方面: 1、Java的風(fēng)格類似于C+,因而C+程序員初次接觸Java語言,就會(huì)感到很熟悉。從某種意義上講,Java語言是C及C+語言的一個(gè)變種,因此,C+程序員可以很快地掌握J(rèn)a

6、va編程技術(shù)。 2、Java摒棄了C+中容易引發(fā)程序錯(cuò)誤的一些特性,如指針、結(jié)構(gòu)、枚舉以及內(nèi)存管理等。 3、Java提供了豐富的類庫,可以幫助我們很方便的開發(fā)Java程序。, Download: ,我們?yōu)槭裁匆肑ava,面向?qū)ο蟮?面向?qū)ο罂梢哉f是Java最重要的特性,所以它支持繼承、重載、多態(tài)等面向?qū)ο蟮奶匦浴ava語言的設(shè)計(jì)是完全面向?qū)ο蟮?它不支持類似C語言那樣的面向過程的程序設(shè)計(jì)技術(shù)。, Download: ,我們?yōu)槭裁匆肑ava,健壯的 Java致力于檢查程序在編譯和運(yùn)行時(shí)的錯(cuò)誤。Java也是一種強(qiáng)

7、類型的語言,其類型檢查比C+還要嚴(yán)格。類型檢查幫助我們檢查出許多開發(fā)早期出現(xiàn)的錯(cuò)誤。Java自己負(fù)責(zé)內(nèi)存管理,提供了垃圾內(nèi)存回收機(jī)制,有效的避免了C+中最頭疼的內(nèi)存泄漏問題。, Download: ,我們?yōu)槭裁匆肑ava,安全的 Java的安全性可從兩個(gè)方面得到保證。一方 面,在Java語言里,刪除了指針和釋放內(nèi)存等C+功能,避免了非法內(nèi)存操作。另一方面,通過Java的安全體系架構(gòu)來確保Java代碼的安全性。當(dāng)我們從網(wǎng)上下載Java代碼在本地執(zhí)行時(shí),Java的安全架構(gòu)能確保惡意的代碼不能隨意訪問我們本地計(jì)算機(jī)的資源,例如:刪除文件,訪問本地網(wǎng)絡(luò)資源等操

8、作都是被禁止的。, Download: ,我們?yōu)槭裁匆肑ava,解釋的 Java代碼是解釋執(zhí)行的,我們使用Java編譯器將Java代碼編譯成字節(jié)碼,這是一種中間代碼,然后由Java解釋器解釋執(zhí)行。而C+程序是編譯執(zhí)行的,C+程序代碼被編譯為本地機(jī)器指令,然后執(zhí)行。, Download: ,我們?yōu)槭裁匆肑ava,與平臺(tái)無關(guān)的 Java作為一種網(wǎng)絡(luò)語言,其源代碼被編譯成一種結(jié)構(gòu)中立的中間文件格式。只要有Java運(yùn)行系統(tǒng)的機(jī)器都能執(zhí)行這種中間代碼。Java源程序被編譯成一種與機(jī)器無關(guān)的字節(jié)碼格式,在Java虛擬機(jī)上運(yùn)

9、行。, Download: ,我們?yōu)槭裁匆肑ava,多線程的 Java語言的一個(gè)重要特性就是在語言級(jí)支持多線程的程序設(shè)計(jì)。多線程就好像我們做一張桌子,如果你一個(gè)人完成這張桌子就好像單線程,那么你需要先做桌面,做完桌面后,再做4個(gè)桌子腿,如果現(xiàn)在有5個(gè)人來做桌子在程序中開辟5個(gè)線程,其中1個(gè)人做桌面,另外4個(gè)人分別做4個(gè)桌子腿,那么這兩種方式效率的高低,相信大家都能區(qū)分出來。, Download: ,我們?yōu)槭裁匆肑ava,動(dòng)態(tài)的 Java的動(dòng)態(tài)特性是其面向?qū)ο笤O(shè)計(jì)方法的擴(kuò)展。它允許程序動(dòng)態(tài)地裝入運(yùn)行過程中所需要的

10、類,這是我們采用C+語言進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì)所無法實(shí)現(xiàn)的。在C+程序設(shè)計(jì)過程中,每當(dāng)在類中增加一個(gè)實(shí)例變量或一個(gè)成員函數(shù)后, 引用該類的所有子類都必須重新編譯,否則將導(dǎo)致程序崩潰。Java從以下幾個(gè)方面采取措施來解決這個(gè)問題。Java編譯器不是將對(duì)實(shí)例變量和成員函數(shù)的引用編譯為數(shù)值引用,而是將符號(hào)引用信息在字節(jié)碼中保存下來,傳遞給解釋器,再由解釋器在完成動(dòng)態(tài)連接類后,將符號(hào)引用信息轉(zhuǎn)換為數(shù)值偏移量。一個(gè)在存儲(chǔ)器中生成的對(duì)象不在編譯過程中決定,而是延遲到運(yùn)行時(shí)由解釋器確定。這樣,對(duì)類中的變量和方法進(jìn)行更新時(shí)就不至于影響現(xiàn)存的代碼。 解釋執(zhí)行字節(jié)碼時(shí),這種符號(hào)信息的查找和轉(zhuǎn)換過程僅在一個(gè)新的名字出

11、現(xiàn)時(shí)才進(jìn)行一次,隨后代碼便可以全速執(zhí)行。在運(yùn)行時(shí)確定引用的好處是可以使用已被更新的類,而不必?fù)?dān)心會(huì)影響原有的代碼。如果程序連接了網(wǎng)絡(luò)中另一系統(tǒng)中的某一類,該類的所有者也可以自由地對(duì)該類進(jìn)行更新,而不會(huì)使任何引用該類的程序崩潰。Java還簡化了使用一個(gè)升級(jí)的或全新協(xié)議的方法。如果你的系統(tǒng)運(yùn)行Java程序時(shí)遇到了不知怎樣處理的程序,Java能自動(dòng)下載你所需要的功能程序。, Download: ,Java跨平臺(tái)的原理,Java的跨平臺(tái)是通過Java虛擬機(jī)(JVM ) (Java Virtual Machine) 來實(shí)現(xiàn)的。,http:/www.sunxin.o

12、rg Download: ,Java跨平臺(tái)的原理,Java源文件的編譯過程 Java應(yīng)用程序的開發(fā)周期包括編譯、下載、解釋和執(zhí)行幾個(gè)部分。Java編譯程序?qū)ava源程序翻譯為JVM可執(zhí)行代碼字節(jié)碼。這一編譯過程同C/C+的編譯有些不同。當(dāng)C編譯器編譯生成一個(gè)對(duì)象的代碼時(shí),該代碼是為在某一特定硬件平臺(tái)運(yùn)行而產(chǎn)生的。因此,在編譯過程中,編譯程序通過查表將所有對(duì)符號(hào)的引用轉(zhuǎn)換為特定的內(nèi)存偏移量,以保證程序運(yùn)行。Java編譯器卻不將對(duì)變量和方法的引用編譯為數(shù)值引用,也不確定程序執(zhí)行過程中的內(nèi)存布局,而是將這些符號(hào)引用信息保留在字節(jié)碼中,由解釋器在運(yùn)行過程中創(chuàng)建內(nèi)存布局,然后再通過查表來確定一個(gè)方法所

13、在的地址。這樣就有效的保證了Java的可移植性和安全性。, Download: ,Java跨平臺(tái)的原理,Java解釋器的執(zhí)行過程 運(yùn)行JVM字節(jié)碼的工作是由解釋器來完成的。解釋執(zhí)行過程分三步進(jìn)行:代碼的裝入、代碼的校驗(yàn)和代碼的執(zhí)行。裝入代碼的工作由“類裝載器”(class loader)完成。類裝載器負(fù)責(zé)裝入運(yùn)行一個(gè)程序需要的所有代碼,這也包括程序代碼中的類所繼承的類和被其調(diào)用的類。當(dāng)類裝載器裝入一個(gè)類時(shí),該類被放在自己的名字空間中。除了通過符號(hào)引用自己名字空間以外的類,類之間沒有其他辦法可以影響其它類。在本臺(tái)計(jì)算機(jī)上的所有類都在同一地址空間內(nèi),而所有從

14、外部引進(jìn)的類,都有一個(gè)自己獨(dú)立的名字空間。這使得本地類通過共享相同的名字空間獲得較高的運(yùn)行效率,同時(shí)又保證它們與從外部引進(jìn)的類不會(huì)相互影響。當(dāng)裝入了運(yùn)行程序需要的所有類后,解釋器便可確定整個(gè)可執(zhí)行程序的內(nèi)存布局。解釋器為符號(hào)引用同特定的地址空間建立對(duì)應(yīng)關(guān)系及查詢表。通過在這一階段確定代碼的內(nèi)存布局,Java很好地解決了由超類改變而使子類崩潰的問題,同時(shí)也防止了代碼對(duì)地址的非法訪問。 隨后,被裝入的代碼由字節(jié)碼校驗(yàn)器進(jìn)行檢查。校驗(yàn)器可發(fā)現(xiàn)操作數(shù)棧溢出,非法數(shù)據(jù)類型轉(zhuǎn)換等多種錯(cuò)誤。通過校驗(yàn)后,代碼便開始執(zhí)行了。, Download: ,Java跨平臺(tái)的原理,

15、Java字節(jié)碼的兩種執(zhí)行方式 1、即時(shí)編譯方式:解釋器先將字節(jié)碼編譯成機(jī)器碼,然后再執(zhí)行該機(jī)器碼。 2、解釋執(zhí)行方式:解釋器通過每次解釋并執(zhí)行一小段代碼來完成Java字節(jié)碼程 序的所有操作。 通常采用的是第二種方法。由于JVM規(guī)格描述具有足夠的靈活性,這使得將字節(jié)碼翻譯為機(jī)器代碼的工作具有較高的效率。對(duì)于那些對(duì)運(yùn)行速度要求較高的應(yīng)用程序,解釋器可將Java字節(jié)碼即時(shí)編譯為機(jī)器碼,從而很好地保證了Java代碼的可移植性和高性能。, Download: ,Java跨平臺(tái)的原理,JVM規(guī)格描述 JVM的設(shè)計(jì)目標(biāo)是提供一個(gè)基于抽象規(guī)格描述的計(jì)算機(jī)模型,為解釋程序

16、開發(fā)人員提供很好的靈活性,同時(shí)也確保Java代碼可在符合該規(guī)范的任何系統(tǒng)上運(yùn)行。JVM對(duì)其實(shí)現(xiàn)的某些方面給出了具體的定義,特別是對(duì)Java可執(zhí)行代碼,即字節(jié)碼(Bytecode)的格式給出了明確的規(guī)格。這一規(guī)格包括操作碼和操作數(shù)的語法和數(shù)值、標(biāo)識(shí)符的數(shù)值表示方式、以及Java類文件中的Java對(duì)象、常量緩沖池在JVM的存儲(chǔ)映象。這些定義為JVM解釋器開發(fā)人員提供了所需的信息和開發(fā)環(huán)境。Java的設(shè)計(jì)者希望給開發(fā)人員以隨心所欲使用Java的自由。 JVM是為Java字節(jié)碼定義的一種獨(dú)立于具體平臺(tái)的規(guī)格描述,是Java平臺(tái)獨(dú)立性的基礎(chǔ)。, Download:

17、 ,Java跨平臺(tái)的原理,Java程序執(zhí)行與C/C+程序執(zhí)行的對(duì)比分析 如果把Java源程序想象成我們的C+源程序,Java源程序編譯后生成的字節(jié)碼就相當(dāng)于C+源程序編譯后的80 x86的機(jī)器碼(二進(jìn)制程序文件),JVM虛擬機(jī)相當(dāng)于80 x86計(jì)算機(jī)系統(tǒng),Java解釋器相當(dāng)于80 x86CPU。在80 x86CPU上運(yùn)行的是機(jī)器碼,在Java解釋器上運(yùn)行的是Java字節(jié)碼。 Java解釋器相當(dāng)于運(yùn)行Java字節(jié)碼的“CPU”,但該“CPU”不是通過硬件實(shí)現(xiàn)的,而是用軟件實(shí)現(xiàn)的。Java解釋器實(shí)際上就是特定的平臺(tái)下的一個(gè)應(yīng)用程序。只要實(shí)現(xiàn)了特定平臺(tái)下的解釋器程序,Java字節(jié)碼就能通過解釋器程序

18、在該平臺(tái)下運(yùn)行,這是Java跨平臺(tái)的根本。當(dāng)前,并不是在所有的平臺(tái)下都有相應(yīng)Java解釋器程序,這也是Java并不能在所有的平臺(tái)下都能運(yùn)行的原因,它只能在已實(shí)現(xiàn)了Java解釋器程序的平臺(tái)下運(yùn)行。, Download: ,Java開發(fā)工具包(JDK)的下載,下載網(wǎng)址:, Download: ,Java的面向?qū)ο缶幊?主講人:孫鑫, Download: ,面向?qū)ο缶幊谈攀?簡單的說,面向?qū)ο缶幊蹋∣bject Oriented Programming,簡稱OOP)描述的是對(duì)象之間

19、的相互作用。 面向?qū)ο缶幊膛c面向過程編程的區(qū)別: 過程化程序設(shè)計(jì)先確定算法,再確定數(shù)據(jù)結(jié)構(gòu);面向?qū)ο缶幊滔却_定數(shù)據(jù)結(jié)構(gòu),再確定運(yùn)算。 面向過程編程的程序員,習(xí)慣于建立數(shù)據(jù)結(jié)構(gòu)存放數(shù)據(jù)并定義方法(函數(shù))來操作數(shù)據(jù);面向?qū)ο缶幊痰某绦騿T則構(gòu)造一個(gè)對(duì)象模型,將數(shù)據(jù)與方法組織在一起。, Download: ,對(duì)象 對(duì)象的狀態(tài) 對(duì)象的行為,我們可以把現(xiàn)實(shí)世界的事物抽象成對(duì)象。 對(duì)象一般都有兩個(gè)特征:狀態(tài)(state)和行為(behavior)。 軟件的對(duì)象概念是由現(xiàn)實(shí)世界對(duì)象抽象而來 。把現(xiàn)實(shí)世界對(duì)象的狀態(tài)保存在軟件對(duì)象的變量中;現(xiàn)實(shí)世界對(duì)象的行為通過軟件對(duì)象的方

20、法(函數(shù))來實(shí)現(xiàn)。, Download: ,類和對(duì)象,把相似的對(duì)象劃歸成一個(gè)類。 在軟件中,類,就是一個(gè)模板,它定義了通用于一個(gè)特定種類的所有對(duì)象的狀態(tài)(變量)和行為(方法)。 類是創(chuàng)建對(duì)象的模板,對(duì)象是類的實(shí)例。, Download: ,面向?qū)ο蟪绦蛟O(shè)計(jì),從程序設(shè)計(jì)的角度看,類是面向?qū)ο蟪绦蛑凶罨镜某绦騿卧?。類?shí)質(zhì)上定義的是一種數(shù)據(jù)類型,這種數(shù)據(jù)類型就是對(duì)象類型 。所以我們可以使用類名稱來聲明對(duì)象變量。 聲明對(duì)象變量之后,還不能使用對(duì)象。必須用運(yùn)算符new創(chuàng)建對(duì)象實(shí)體之后,才能使用對(duì)象。,http:/www.s

21、 Download: ,面向?qū)ο缶幊痰碾y點(diǎn),掌握面向?qū)ο蟮睦щy之處在于思路的轉(zhuǎn)換。 我們通常習(xí)慣于考慮解決問題的方法,而不是考慮將問題抽象成對(duì)象再去解決它。, Download: ,一個(gè)簡單的例子,編寫一個(gè)駕駛汽車的方法 面向過程的程序設(shè)計(jì): 編寫一個(gè)方法,void drivecar(); 面向?qū)ο蟮某绦蛟O(shè)計(jì): 將一輛汽車看成一個(gè)對(duì)象,將所有汽車對(duì)象的共性抽取出來,設(shè)計(jì)一個(gè)類Car,類中有一個(gè)方法void drive(),用Car這個(gè)類實(shí)例化一個(gè)具體的對(duì)象car,調(diào)用:car.drive()。,

22、Download: ,類的構(gòu)造方法,構(gòu)造方法的名字和類名相同,并且沒有返回值。 構(gòu)造方法主要用于為類的對(duì)象定義初始化狀態(tài)。 我們不能直接調(diào)用構(gòu)造方法,必須通過new關(guān)鍵字來自動(dòng)調(diào)用,從而創(chuàng)建類的實(shí)例。 Java的類都要求有構(gòu)造方法,如果沒有定義構(gòu)造方法,Java編譯器會(huì)為我們提供一個(gè)缺省的構(gòu)造方法,也就是不帶參數(shù)的構(gòu)造方法。, Download: ,new關(guān)鍵字的作用,為對(duì)象分配內(nèi)存空間。 引起對(duì)象構(gòu)造方法的調(diào)用。 為對(duì)象返回一個(gè)引用。, Download: ,缺省構(gòu)造方法,當(dāng)我們用缺省的構(gòu)造方法初始化對(duì)象時(shí),系統(tǒng)

23、用默認(rèn)值初始化對(duì)象的成員變量。 各種數(shù)據(jù)類型的默認(rèn)值為: 數(shù)值型0 booleanfalse char0 對(duì)象null, Download: ,方法的重載(overload),重載構(gòu)成的條件:方法的名稱相同,但參數(shù)類型或參數(shù)個(gè)數(shù)不同,才能構(gòu)成方法的重載。, Download: ,特殊變量this,this變量代表對(duì)象本身 當(dāng)類中有兩個(gè)同名變量,一個(gè)屬于類(類的成員變量),而另一個(gè)屬于某個(gè)特定的方法(方法中的局部變量),使用this區(qū)分成員變量和局部變量。 使用this簡化構(gòu)造函數(shù)的調(diào)用。,http:/www.sun

24、 Download: ,特殊變量this,關(guān)于實(shí)例方法和實(shí)例數(shù)據(jù)成員的進(jìn)一步說明 一個(gè)類所有的實(shí)例(對(duì)象)調(diào)用的成員方法在內(nèi)存中只有一份拷貝,盡管在內(nèi)存中可能有多個(gè)對(duì)象,而數(shù)據(jù)成員在類的每個(gè)對(duì)象所在內(nèi)存中都存在著一份拷貝。this變量允許相同的實(shí)例方法為不同的對(duì)象工作。每當(dāng)調(diào)用一個(gè)實(shí)例方法時(shí),this變量將被設(shè)置成引用該實(shí)例方法的特定的類對(duì)象。方法的代碼接著會(huì)與this所代表的對(duì)象的特定數(shù)據(jù)建立關(guān)聯(lián)。, Download: ,關(guān)鍵字static,靜態(tài)方法和靜態(tài)變量是屬于某一個(gè)類,而不屬于類的對(duì)象。 靜態(tài)方法和靜態(tài)變量的引用直接通過類名引用。

25、 在靜態(tài)方法中不能調(diào)用非靜態(tài)的方法和引用非靜態(tài)的成員變量。反之,則可以。 可以用類的對(duì)象obj去調(diào)用靜態(tài)的方法method(),如:obj.method()。, Download: ,常量的定義,使用關(guān)鍵字final定義常量,例如: final double PI=3.1415926; 作為一種約定,在定義常量時(shí),通常采用大寫形式。 final常量可以在聲明的同時(shí)賦初值,也可以在構(gòu)造函數(shù)中賦初值。 為了節(jié)省內(nèi)存,我們通常將常量聲明為靜態(tài)的(static)。, Download: ,類的繼承,理解繼承是理解面向?qū)ο蟪?/p>

26、序設(shè)計(jì)的關(guān)鍵。 在Java中,通過關(guān)鍵字extends繼承一個(gè)已有的類,被繼承的類稱為父類(超類,基類),新的類稱為子類(派生類)。 在Java中,不允許多繼承。, Download: ,方法的覆蓋(override),在子類中定義一個(gè)與父類同名、返回類型、參數(shù)類型均相同一個(gè)方法,稱為方法的覆蓋。 覆蓋發(fā)生在子類與父類之間。, Download: ,特殊變量super,特殊變量super,提供了對(duì)父類的訪問。 可以使用super訪問父類被子類隱藏的變量或覆蓋的方法。 每個(gè)子類構(gòu)造方法的第一條語句,都是隱含地調(diào)用su

27、per(),如果父類沒有這種形式的構(gòu)造函數(shù),那么在編譯的時(shí)候就會(huì)報(bào)錯(cuò)。, Download: ,多態(tài)性,通過覆蓋父類的方法來實(shí)現(xiàn),在運(yùn)行時(shí)根據(jù)傳遞的對(duì)象引用,來調(diào)用相應(yīng)的方法。, Download: ,面向?qū)ο蟮某绦蛟O(shè)計(jì),問題:求一個(gè)長方形的周長和面積。 以面向過程的程序設(shè)計(jì)方式思考: 1、確定長方形周長和面積的算法。 2、編寫兩個(gè)方法(函數(shù))分別計(jì)算長方形的周長和面積。 3、求周長的方法(函數(shù))和求面積的方法(函數(shù))需要兩個(gè)參數(shù),分別是長方形的長和寬。, Download:

28、 ,面向過程的程序設(shè)計(jì)代碼: class Rectangle static int perimeter(int length,int width) return 2*(length+width); static int area(int length,int width) return length*width; public static void main(String args) System.out.println(perimeter = “ + Rectangle.perimeter(5,4); System.out.println(area = “ + Rectangle.area

29、(5,4); , Download: ,面向?qū)ο蟮某绦蛟O(shè)計(jì),問題:求一個(gè)長方形的周長和面積。 以面向?qū)ο蟮某绦蛟O(shè)計(jì)方式思考: 1、一個(gè)長方形可以看成一個(gè)長方形對(duì)象。 2、一個(gè)長方形對(duì)象有兩個(gè)狀態(tài)(長和寬)和兩個(gè)行為(求周長和求面積)。 3、將所有長方形的共性抽取出來,設(shè)計(jì)一個(gè)長方形類。 4、通過長方形對(duì)象的行為,就可以求出某個(gè)具體的長方形對(duì)象的周長和面積。, Download: ,面向?qū)ο蟮某绦蛟O(shè)計(jì),Demo, Download: ,位運(yùn)算,主講人:孫鑫,http:/www.

30、 Download: ,計(jì)算機(jī)中數(shù)據(jù)的表示方法,計(jì)算機(jī)是一種電子設(shè)備,由復(fù)雜的電子元器件組合而成,一個(gè)電子元器件有帶電和不帶電兩種狀態(tài),通常我們將帶電狀態(tài)表示為數(shù)值1,不帶電狀態(tài)表示為數(shù)值0,多個(gè)這樣的元器件的組合可以表示更多狀態(tài),也就是可以表示更多的數(shù)據(jù),如000表示0,001表示1,010表示2,011表示3,依此類推,111表示7,一個(gè)元器件可表示一位(bit)數(shù)據(jù),這種表示數(shù)據(jù)的方式就叫二進(jìn)制。在實(shí)際的電子設(shè)備中,我們將8個(gè)這樣的元器件形成一個(gè)單元,這樣的單元叫一個(gè)字節(jié)(byte),一個(gè)字節(jié)能表示多少個(gè)數(shù)呢?表示數(shù)值的范圍是0-255。 一個(gè)字節(jié)由8個(gè)二進(jìn)位組成,其

31、中最右邊的一位稱為“最低有效位”或“最低位”,最左邊的一位稱為“最高有效位”或“最高位”。每一個(gè)二進(jìn)位的值是0或1。, Download: ,計(jì)算機(jī)中數(shù)據(jù)的表示方法,二進(jìn)制計(jì)數(shù)的缺點(diǎn):書寫太長,容易出錯(cuò),一般計(jì)算機(jī)的數(shù)據(jù)位數(shù)都是4的整數(shù)倍,所以,在計(jì)算機(jī)里通常采用16進(jìn)制計(jì)數(shù)法。用數(shù)字可以表示各種信息,計(jì)算機(jī)里只有數(shù)值,當(dāng)你在內(nèi)存中看到一個(gè)數(shù)值時(shí),這個(gè)數(shù)值可能代表各種意義,生活中的數(shù)值也可以代表其他意義,如1234可以代表密碼,存款額,電報(bào)信息,根據(jù)上下線索,我們就能夠知道這數(shù)值代表的意義。, Download:

32、,原碼、反碼和補(bǔ)碼,原碼 將最高位作為符號(hào)位(以0代表正,1代表負(fù)),其余各位代表數(shù)值本身的絕對(duì)值(以二進(jìn)制表示)。 為了簡單起見,我們用1個(gè)字節(jié)來表示一個(gè)整數(shù)。 +7的原碼為:00000111 -7的原碼為:10000111 問題: +0的原碼為: 00000000 -0的原碼為: 10000000, Download: ,原碼、反碼和補(bǔ)碼,反碼 一個(gè)數(shù)如果為正,則它的反碼與原碼相同;一個(gè)數(shù)如果為負(fù),則符號(hào)位為1,其余各位是對(duì)原碼取反。 為了簡單起見,我們用1個(gè)字節(jié)來表示一個(gè)整數(shù)。 +7的反碼為:00000111 -7的反碼為:11111000 問題:

33、 +0的反碼為: 00000000 -0的反碼為: 11111111, Download: ,原碼、反碼和補(bǔ)碼,補(bǔ)碼 利用溢出,我們可以將減法變成加法。 對(duì)于十進(jìn)制數(shù),如果從9得到結(jié)果5,可以用減法: 9-4=5 因?yàn)?+6=10,我們將6作為4的補(bǔ)數(shù),將上式的減法改寫為加法: 9+6=15 去掉高位1(也就是減去10),得到結(jié)果5。 對(duì)于16進(jìn)制數(shù),如果從C得到結(jié)果5,可以用減法: C-7=5 因?yàn)?+9=16,我們將9作為7的補(bǔ)數(shù),將上式的減法改寫為加法: C+9=15 去掉高位1(也就是減去16),得到結(jié)果5。,http:/www.sunxin.o

34、rg Download: ,原碼、反碼和補(bǔ)碼,補(bǔ)碼 在計(jì)算機(jī)中,如果我們用1個(gè)字節(jié)表示一個(gè)數(shù),一個(gè)字節(jié)有8位,超過8位就進(jìn)1,在內(nèi)存中情況為: 1 00000000 進(jìn)位1被丟棄。, Download: ,原碼、反碼和補(bǔ)碼,+1,11111001,補(bǔ)碼 一個(gè)數(shù)如果為正,則它的原碼、反碼、補(bǔ)碼相同;一個(gè)數(shù)如果為負(fù),則符號(hào)位為1,其余各位是對(duì)原碼取反,然后整個(gè)數(shù)加1。 為了簡單起見,我們用1個(gè)字節(jié)來表示一個(gè)整數(shù)。 +7的補(bǔ)碼為:00000111 -7的補(bǔ)碼為:第步11111000 第步, Download: ,原碼、反

35、碼和補(bǔ)碼,補(bǔ)碼 0的補(bǔ)碼表示: +0的補(bǔ)碼: 00000000 -0的補(bǔ)碼:第步 11111111 第步 進(jìn)位1被丟棄,+1,1 00000000,第步, Download: ,原碼、反碼和補(bǔ)碼,補(bǔ)碼 已知一個(gè)負(fù)數(shù)的補(bǔ)碼,將其轉(zhuǎn)換為十進(jìn)制數(shù),步驟: 1、先對(duì)各位取反; 2、將其轉(zhuǎn)換為十進(jìn)制數(shù); 3、加上負(fù)號(hào),再減去1。 例如: 11111010,最高位為1,是負(fù)數(shù),先對(duì)各位取反得00000101,轉(zhuǎn)換為十進(jìn)制數(shù)得5,加上負(fù)號(hào)得-5,再減1得-6。, Download: ,位運(yùn)算符,為了方便對(duì)二進(jìn)制位進(jìn)行操作,Jav

36、a給我們提供了四個(gè)二進(jìn)制位操作符: 引入整個(gè)包。 import java.io.*; 在同一包中的類可以互相引用,無需import語句。, Download: ,類的說明符,類的訪問說明符 (1)public (2)default(不加訪問說明符時(shí)) 類的其它修飾符 (1)final (2)abstract, Download: ,方法的說明符,方法的訪問說明符 (1)public (2)protected (3)default(不加訪問說明符時(shí)) (4)private 方法的其它修飾符 (1)static (2)

37、final (3)abstract (4)native (5)synchronized, Download: ,方法的訪問控制,不同 情形下,訪問說明符, Download: ,方法的訪問控制,不同 情形下,訪問說明符, Download: ,方法的訪問控制,不同 情形下,訪問說明符, Download: ,方法的訪問控制,不同 情形下,訪問說明符, Download: ,方法的訪問控制,不同 情

38、形下,訪問說明符, Download: ,final方法,為了確保某個(gè)函數(shù)的行為在繼承過程中保持不變,并且不能被覆蓋(overridden),可以使用final方法。 為了效率上的考慮,將方法聲明為final,讓編譯器對(duì)此方法的調(diào)用進(jìn)行優(yōu)化。要注意的是:編譯器會(huì)自行對(duì)final方法進(jìn)行判斷,并決定是否進(jìn)行優(yōu)化。通常在方法的體積很小,而我們確實(shí)不希望它被覆蓋時(shí),才將它聲明為final。 class中所有的private和static方法自然就是final。, Download: ,抽象方法和抽象類,在類中沒有方法體的

39、方法,就是抽象方法。 含有抽象方法的類,即為抽象類。 如果一個(gè)子類沒有實(shí)現(xiàn)抽象基類中所有的抽象方法,則子類也成為一個(gè)抽象類。 我們可以將一個(gè)沒有任何抽象方法的類聲明為abstract,避免由這個(gè)類產(chǎn)生任何的對(duì)象。 構(gòu)造方法、靜態(tài)方法、私有方法、final方法不能被聲明為抽象的方法。, Download: ,native方法,native方法是用戶在Java中可以使用,但不能編寫的方法。 JNI(Java Native Interface),它允許Java虛擬機(jī)(JVM)內(nèi)部運(yùn)行的Java代碼能夠與用其它編程語言(如C、C+、匯編語言)編寫的應(yīng)用程序和庫進(jìn)

40、行互操作。 JNI最大的好處是它沒有對(duì)底層Java虛擬機(jī)的實(shí)現(xiàn)施加任何限制,因此,Java虛擬機(jī)廠商可以在不影響虛擬機(jī)其它部分的情況下添加對(duì)JNI的支持。程序員只需編寫一種版本的本地(Native)應(yīng)用程序和庫,就能夠與所有支持JNI的Java虛擬機(jī)協(xié)同工作。 JNI可以理解為Java和本地應(yīng)用程序之間的中介。, Download: ,接口,接口中所有的方法都是public abstract。 在接口中聲明方法時(shí),不能使用native、static 、final 、synchronized 、private 、protected等修飾符。 和public

41、類一樣,public接口也必須定義在與接口同名的文件中。, Download: ,接口,接口中可以有數(shù)據(jù)成員,這些成員默認(rèn)都是public static final。, Download: ,Math.java interface Math double PI=3.1415926; class Arithmetic implements Math double roundArea(double radius) return PI*radius*radius; class Student public static

42、void main(String args) Arithmetic a=new Arithmetic(); System.out.println(a.roundArea(3); System.out.println(Math.PI);/ok System.out.println(Arithmetic.PI);/ok System.out.println(a.PI);/ok ,接口,一個(gè)接口可以繼承自另一個(gè)接口。 Java中不允許類的多繼承,但允許接口的多繼承。, Download: ,Sofa.java interface Sittable void s

43、it(); interface Lie void sleep(); interface Chair extends Sittable interface Sofa extends Sittable, Lie , Download: ,接口,在Java中,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。 一個(gè)類在繼承另外一個(gè)類的同時(shí),可以實(shí)現(xiàn)多個(gè)接口。, Download: ,Sofa.java /實(shí)現(xiàn)多個(gè)接口 interface Sittable void sit(); interface Lie void sleep(); class

44、Sofa implements Sittable, Lie public void sit() public void sleep() , Download: ,Sofa.java /在繼承類的同時(shí),實(shí)現(xiàn)多個(gè)接口 interface Sittable void sit(); interface Lie void sleep(); interface HealthCare void massage(); class Chair implements Sittable public void sit(); class Sofa extends Chair i

45、mplements Lie, HealthCare public void sleep(); public void massage(); ,內(nèi)部類,在一個(gè)類中定義另外一個(gè)類,這個(gè)類就叫做內(nèi)部類或內(nèi)置類 (inner class) 。 內(nèi)部類可以讓我們將邏輯上相關(guān)的一組類組織起來,并由外部類(outer class)來控制內(nèi)部類的可見性。 當(dāng)我們建立一個(gè)inner class時(shí),其對(duì)象就擁有了與外部類對(duì)象之間的一種關(guān)系,這是通過一個(gè)特殊的this reference形成的,使得內(nèi)部類對(duì)象可以隨意的訪問外部類中所有的成員。, Download: ,clas

46、s Outer private int index=100; void print() Inner i=new Inner(); i.print(); class Inner void print() System.out.println(index); class Test public static void main(String args) Outer o=new Outer(); o.print(); ,o,this,i,main,o.print,i.print,this,棧內(nèi)存,堆內(nèi)存,Outer類對(duì)象,Inner類對(duì)象,Outer.this,http:/www.sunxin.or

47、g Download: ,內(nèi)部類,在方法中定義的內(nèi)部類,如果要訪問方法中定義的本地變量或方法的參數(shù),則變量必須被聲明final。 內(nèi)部類可以聲明為private或protected;還可以聲明為abstract或final。 內(nèi)部類可以聲明為static的,但此時(shí)就不能再使用外部類的非static的成員變量和非static的成員方法; 非static的內(nèi)部類中的成員不能聲明為static的,只有在頂層類或static的內(nèi)部類中才可聲明static成員。, Download: ,內(nèi)部類,我們?yōu)槭裁词褂脙?nèi)部類 1、在內(nèi)部類(inner class)中,可以隨

48、意的訪問外部類的成員,這可以讓我們更好地組織管理我們的代碼,增強(qiáng)代碼的可讀性。 2、內(nèi)部類可以用于創(chuàng)建適配器類,適配器類是用于實(shí)現(xiàn)接口的類。使用內(nèi)部類來實(shí)現(xiàn)接口,可以更好地定位與接口關(guān)聯(lián)的方法在代碼中的位置。 3、內(nèi)部類的更多用法。, Download: ,異常類的層次結(jié)構(gòu), Download: ,異常處理,打開一個(gè)不存在的文件、網(wǎng)絡(luò)連接中斷、數(shù)組下標(biāo)越界、正在加載的類文件丟失等都會(huì)引發(fā)異常。 Java中的異常類定義了程序中遇到的輕微的錯(cuò)誤條件。 Java中的錯(cuò)誤類定義了程序中不能恢復(fù)的嚴(yán)重錯(cuò)誤條件。如內(nèi)存溢出、類

49、文件格式錯(cuò)誤等。這一類錯(cuò)誤由Java運(yùn)行系統(tǒng)處理,不需要我們?nèi)ヌ幚怼? Download: ,異常處理,Java程序在執(zhí)行過程中如出現(xiàn)異常,會(huì)自動(dòng)生成一個(gè)異常類對(duì)象,該異常對(duì)象將被提交給Java運(yùn)行時(shí)系統(tǒng),這個(gè)過程稱為拋出(throw)異常。 當(dāng)Java運(yùn)行時(shí)系統(tǒng)接收到異常對(duì)象時(shí),會(huì)尋找能處理這一異常的代碼并把當(dāng)前異常對(duì)象交給其處理,這一過程稱為捕獲(catch)異常。 如果Java運(yùn)行時(shí)系統(tǒng)找不到可以捕獲異常的方法,則運(yùn)行時(shí)系統(tǒng)將終止,相應(yīng)的Java程序也將退出。 try/catch/finally語句。, Do

50、wnload: ,異常處理,對(duì)于RuntimeException,通常不需要我們?nèi)ゲ东@,這類異常由Java運(yùn)行系統(tǒng)自動(dòng)拋出并自動(dòng)處理。 如果父類中的方法拋出多個(gè)異常,則子類中的覆蓋方法要么拋出相同的異常,要么拋出異常的子類,但不能拋出新的異常(注:構(gòu)造方法除外)。 我們可以在方法聲明時(shí),聲明一個(gè)不會(huì)拋出的異常,Java編譯器就會(huì)強(qiáng)迫方法的使用者對(duì)異常進(jìn)行處理。這種方式通常應(yīng)用于abstract base class和interface中。, Download: ,Java編程規(guī)范,package的命名 package 的名字由全部小寫的字母組成,例如:c

51、n.mybole。 class和interface的命名 class和interface的名字由大寫字母開頭而其他字母都小寫的單詞組成,例如:Person,RuntimeException。 class變量的命名 變量的名字用一個(gè)小寫字母開頭,后面的單詞用大寫字母開頭,例如:index,currentImage。 class方法的命名 方法的名字用一個(gè)小寫字母開頭,后面的單詞用大寫字母開頭,例如:run(),getBalance()。 static final變量的命名 static final變量的名字所有字母都大寫,并且能表示完整含義。例如:PI,PASSWORD。 參數(shù)的命名 參數(shù)的名字

52、和變量的命名規(guī)范一致。 數(shù)組的命名 數(shù)組應(yīng)該總是用這樣的方式來命名:byte buffer。, Download: ,附:JVM 規(guī)格描述,JVM定義了控制Java代碼解釋執(zhí)行和具體實(shí)現(xiàn)的五種規(guī)格 JVM指令系統(tǒng) JVM寄存器 JVM棧結(jié)構(gòu) JVM碎片回收堆 JVM存儲(chǔ)區(qū), Download: ,附:JVM 規(guī)格描述,JVM指令系統(tǒng) JVM指令系統(tǒng)同其他計(jì)算機(jī)的指令系統(tǒng)極其相似。Java指令也是由操作碼和操作數(shù)兩部分組成。操作碼為8位二進(jìn)制數(shù),操作數(shù)緊隨在操作碼的后面,其長度根據(jù)需要而不同。操作碼用于指定一條指令操

53、作的性質(zhì)(在這里我們采用匯編符號(hào)的形式進(jìn)行說明),如iload表示從存儲(chǔ)器中裝入一個(gè)整數(shù),anewarray表示為一個(gè)新數(shù)組分配空間,iand表示兩個(gè)整數(shù)的“與”,ret用于流程控制,表示從對(duì)某一方法的調(diào)用中返回。當(dāng)長度大于8位時(shí),操作數(shù)被分為兩個(gè)以上字節(jié)存放。JVM采用了“big endian”的編碼方式來處理這種情況,即高位bits存放在低字節(jié)中。這同 Motorola及其他的RISC CPU采用的編碼方式是一致的,而與Intel采用的“l(fā)ittle endian ”的編碼方式即低位bits存放在低位字節(jié)的方法不同。 Java指令系統(tǒng)是以Java語言的實(shí)現(xiàn)為目的設(shè)計(jì)的,其中包含了用于調(diào)用方

54、法和監(jiān)視多線程系統(tǒng)的指令。, Download: ,附:JVM 規(guī)格描述,JVM寄存器 所有的CPU均包含用于保存系統(tǒng)狀態(tài)和處理器所需信息的寄存器組。如果虛擬機(jī)定義較多的寄存器,便可以從中得到更多的信息而不必對(duì)?;騼?nèi)存進(jìn)行訪問,這有利于提高運(yùn)行速度。然而,如果虛擬機(jī)中的寄存器比實(shí)際CPU的寄存器多,在實(shí)現(xiàn)虛擬機(jī)時(shí)就會(huì)占用處理器大量的時(shí)間來用常規(guī)存儲(chǔ)器模擬寄存器,這反而會(huì)降低虛擬機(jī)的效率。針對(duì)這種情況,JVM只設(shè)置了4個(gè)最為常用的寄存器。它們是: pc程序計(jì)數(shù)器 optop操作數(shù)棧頂指針 frame當(dāng)前執(zhí)行環(huán)境指針 vars指向當(dāng)前執(zhí)行環(huán)境中第一個(gè)局部變量

55、的指針 所有寄存器均為32位。pc用于記錄程序的執(zhí)行。optop,frame和vars用于記錄指向Java棧區(qū)的指針。, Download: ,附:JVM 規(guī)格描述,JVM棧結(jié)構(gòu) 作為基于棧結(jié)構(gòu)的計(jì)算機(jī),Java棧是JVM存儲(chǔ)信息的主要方法。當(dāng)JVM得到一個(gè)Java字節(jié)碼應(yīng)用程序后,便為該代碼中一個(gè)類的每一個(gè)方法創(chuàng)建一個(gè)棧框架,以保存該方法的狀態(tài)信息。每個(gè)??蚣馨ㄒ韵氯愋畔ⅲ?局部變量 執(zhí)行環(huán)境 操作數(shù)棧局部變量用于存儲(chǔ)一個(gè)類的方法中所用到的局部變量。vars寄存器指向該變量表中的第一個(gè)局部變量。 執(zhí)行環(huán)境用于保存解釋器對(duì)Java字節(jié)碼進(jìn)行解釋過程中

56、所需的信息。它們是:上次調(diào)用的方法、局部變量指針和操作數(shù)棧的棧頂和棧底指針。執(zhí)行環(huán)境是執(zhí)行一個(gè)方法的控制中心。例如:如果解釋器要執(zhí)行iadd(整數(shù)加法),首先要從frame寄存器中找到當(dāng)前執(zhí)行環(huán)境,而后便從執(zhí)行環(huán)境中找到操作數(shù)棧,從棧頂彈出兩個(gè)整數(shù)進(jìn)行加法運(yùn)算,最后將結(jié)果壓入棧頂。 操作數(shù)棧用于存儲(chǔ)運(yùn)算所需操作數(shù)及運(yùn)算的結(jié)果。, Download: ,附:JVM 規(guī)格描述,JVM碎片回收堆 Java類的實(shí)例(對(duì)象)所需的存儲(chǔ)空間是在堆上分配的。解釋器具體承擔(dān)為類實(shí)例分配空間的工作。解釋器在為一個(gè)實(shí)例分配完存儲(chǔ)空間后,便開始記錄對(duì)該實(shí)例所占用的內(nèi)存區(qū)域的使

57、用。一旦對(duì)象使用完畢,便將其回收到堆中。 在Java語言中,除了new語句外沒有其他方法為一對(duì)象申請和釋放內(nèi)存。對(duì)內(nèi)存進(jìn)行釋放和回收的工作是由Java運(yùn)行系統(tǒng)承擔(dān)的。這允許Java運(yùn)行系統(tǒng)的設(shè)計(jì)者自己決定碎片回收的方法。在SUN公司開發(fā)的Java解釋器和Hot Java環(huán)境中,碎片回收用后臺(tái)線程的方式來執(zhí)行。這不但為運(yùn)行系統(tǒng)提供了良好的性能,而且使程序設(shè)計(jì)人員擺脫了自己控制內(nèi)存使用的風(fēng)險(xiǎn)。, Download: ,附:JVM 規(guī)格描述,JVM存儲(chǔ)區(qū) JVM有兩類存儲(chǔ)區(qū):常量緩沖池和方法區(qū)。常量緩沖池用于存儲(chǔ)類名稱、方法和字段名稱以及串常量。方法區(qū)則用于存

58、儲(chǔ)Java方法的字節(jié)碼。對(duì)于這兩種存儲(chǔ)區(qū)域具體實(shí)現(xiàn)方式在JVM規(guī)格中沒有明確規(guī)定。這使得Java應(yīng)用程序的存儲(chǔ)布局必須在運(yùn)行過程中確定,依賴于具體平臺(tái)的實(shí)現(xiàn)方式。, Download: ,Lesson4,主講人:孫鑫, Download: ,主要內(nèi)容,Java的常用包 “=”和“equals”的用法 基本數(shù)據(jù)類型與引用類型 String和StringBuffer 對(duì)象的克隆(clone) 數(shù)組的相關(guān)操作 封裝類 Runtime類與Process類 Class類 設(shè)計(jì)模式, Download: ,Java的常用包,java.applet:包含一些用于創(chuàng)建Java小應(yīng)用程序的類。 java.awt:包含一些用于編寫與平臺(tái)無關(guān)的圖形界面(GUI)應(yīng)用程序的類。 java.io:包含一些用作輸入輸出(I/O)處理的類。 java.lang:包含一些Java語言的基本類與核心類,如String、Math、Integ

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論