JAVA學(xué)習(xí)筆記.doc_第1頁(yè)
JAVA學(xué)習(xí)筆記.doc_第2頁(yè)
JAVA學(xué)習(xí)筆記.doc_第3頁(yè)
JAVA學(xué)習(xí)筆記.doc_第4頁(yè)
JAVA學(xué)習(xí)筆記.doc_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

JAVA學(xué)習(xí)筆記配置java環(huán)境變量:JAVA_HOME:配置JDK的目錄(變量名就是JDK的安裝目錄)CLASSPATH:指定到哪里去找運(yùn)行時(shí)需要用到的類(lèi)代碼(字節(jié)碼)PATH:指定可執(zhí)行程序的位置LINUX系統(tǒng)(在 .bash_profile 下的環(huán)境變量設(shè)置)JAVA_HOME=/opt/jdk1.5.0_06CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jarPATH=$PATH:$JAVA_HOME/bin:.export JAVA_HOME CLASSPATH PATH (將指定的環(huán)境變量聲明為全局的)windows系統(tǒng):右擊我的電腦-屬性-高級(jí)-環(huán)境變量Java的運(yùn)行過(guò)程:編譯:生成可執(zhí)行文件,如C+中利用g+生成a.out,效率高,但不跨平臺(tái)解釋?zhuān)航忉屍靼言次募鹦薪忉專(zhuān)缙脚_(tái)但效率不高在java中:先編譯后解釋?zhuān)?java文件編譯成.class字節(jié)碼文件Java源代碼文件(.java文件)-Java編譯器(javac)-Java字節(jié)碼文件(.class文件,平臺(tái)無(wú)關(guān)的)-Java解釋器(java),執(zhí)行Java字節(jié)碼Java的垃圾回收:由一個(gè)后臺(tái)線程gc進(jìn)行垃圾回收虛擬機(jī)判定內(nèi)存不夠的時(shí)候會(huì)中斷代碼的運(yùn)行,這時(shí)候gc才進(jìn)行垃圾回收缺點(diǎn):不能夠精確的去回收內(nèi)存java.lang.System.gc();建議回收內(nèi)存,但系統(tǒng)不一定回應(yīng),他會(huì)先去看內(nèi)存是否夠用, 夠用則不予理睬,不夠用才會(huì)去進(jìn)行垃圾回收內(nèi)存中什么算是垃圾:不在被引用的對(duì)象(局部變量,沒(méi)有指針指向的)Java的安全性:沙箱機(jī)制:只能做沙箱允許的操作通過(guò)下面環(huán)節(jié),實(shí)現(xiàn)安全加載有用的類(lèi)文件,不需要的不加載校驗(yàn)字節(jié)碼,查看允許的操作查看代碼和虛擬機(jī)的特性是否相符查看代碼是否有破壞性查看是否有違規(guī)操作,如越界查看類(lèi)型是否匹配,類(lèi)型轉(zhuǎn)換是否能正確執(zhí)行源程序:package mypack;/相當(dāng)于一個(gè)目錄public class HelloWorldpublic static void main(String args)System.out.println(“Hello World”); 注:1、文件名必須和public修飾的類(lèi)名一致,以.java作為文件后綴,如果定義的類(lèi)不 是public的,則文件名與類(lèi)名可以不同。2、一個(gè).java文件中可以有多個(gè)class,但是只有一個(gè)public修飾的類(lèi)。3、java源代碼文件編譯后,一個(gè)類(lèi)對(duì)應(yīng)生成一個(gè).class文件4、一個(gè)java應(yīng)用程序應(yīng)該包含一個(gè)main()方法,而且其簽名是固定的,它是應(yīng)用 程序的入口方法,可以定義在任意一個(gè)類(lèi)中,不一定是public修飾的類(lèi)編譯:javac -d . HelloWorld.java 含有包的類(lèi),在編譯的時(shí)候最好用上面的格式,-d指的是讓該類(lèi)生成的時(shí)候按 照包結(jié)構(gòu)去生成, . 指的是在當(dāng)前路徑下生成; 如果不用上面的格式,也可以用javac HelloWorld.java,但是需要注意的是包結(jié)構(gòu) 就要由自己去建立,然后將生成的.class文件放到該目錄下。執(zhí)行:java mypack.HelloWorld 將字節(jié)碼文件交給Java虛擬機(jī)去解釋執(zhí)行 需要注意的事,必須使用包名.類(lèi)名去解釋執(zhí)行包(package):把源文件放在目錄下由于工程的需要,將不同的源文件放在不同的目錄下,從而引入了包。包可以看作就是一個(gè)存放java源文件的目錄。在源碼中聲明一個(gè)包名:package p;(只能放在第一行,且最多只能是一行)如果指定多層包,那么在包名之間我們可以用.作為分隔符:package p1.p2.p3.p4;用“javac HelloWorld.java d 絕對(duì)路徑”,編譯后生成的字節(jié)碼文件就會(huì)放在指定的包結(jié)構(gòu)下執(zhí)行該程序需要用 java 包名.類(lèi)名 引進(jìn)包中的某個(gè)類(lèi):import 包名.類(lèi)名;引進(jìn)包中的所有類(lèi):import 包名.*;注釋?zhuān)?單行注釋?zhuān)?到本行結(jié)束的所有字符會(huì)被編譯器忽略/* */多行注釋?zhuān)?在/* */之間的所有字符會(huì)被編譯器忽略/* */ 文檔注釋?zhuān)?java特有的,在/* */之間的所有字符會(huì)被編譯器忽略可以用javadoc把java源程序中這種注釋抽取出來(lái)形成html頁(yè)面(只有寫(xiě)在包,類(lèi),屬性,方法,構(gòu)造器,引入之前的注釋才可以進(jìn)行抽取) 標(biāo)識(shí)符:命名規(guī)則:(1) 由字母、數(shù)字、下劃線、$組成,不能以數(shù)字開(kāi)頭(2) 大小寫(xiě)敏感(3) 不得使用java中的關(guān)鍵字和保留字關(guān)鍵字:都是小寫(xiě)的,jdk1.2多了strictfp(經(jīng)準(zhǔn)浮點(diǎn)型)關(guān)鍵字,jdk1.4多了assert(斷言)關(guān)鍵字, jdk1.5多了enum(枚舉) 關(guān)鍵字隨著學(xué)習(xí)進(jìn)度,會(huì)慢慢接觸到的true、false、null嚴(yán)格說(shuō)不應(yīng)該算關(guān)鍵字,應(yīng)稱(chēng)其為保留字更合適習(xí)慣:(1) 標(biāo)識(shí)符要符合語(yǔ)義信息(2) 包名所有字母小寫(xiě)(3) 類(lèi)名每個(gè)單詞首字母大寫(xiě),其它小寫(xiě) /TarenaStudent(4) 變量和方法:第一個(gè)單詞小寫(xiě),從第二個(gè)單詞開(kāi)始首字母大寫(xiě) /tarenaStudent(5) 常量:所有字母大寫(xiě),每個(gè)單詞之間用 _ 連接基本數(shù)據(jù)類(lèi)型:8種1) 整型 byte 1B 8位 -128到127 short 2B 16位 -215到(215)-1 int 4B 32位 -231到(231)-1 long 8B 64位 -263到(263)-1 2) 浮點(diǎn)類(lèi)型 float 4B 32位 double 8B 64位 3) 字符類(lèi)型 char 2B16位 4) 布爾型 1Bboolean false/true注:1、Java中的自動(dòng)類(lèi)型提升問(wèn)題。1)、正向過(guò)程:從低字節(jié)到高字節(jié)可以自動(dòng)轉(zhuǎn)換。byte-short-int-long-float-double2)、逆向過(guò)程:從高字節(jié)到低字節(jié)用強(qiáng)制類(lèi)型轉(zhuǎn)換。例:int a = (int)4.562;注:逆向轉(zhuǎn)換將丟失精度。 2、boolean:只有true和false。3、char:Java中用 u四位十六進(jìn)制的數(shù)字 (即使在注釋中出現(xiàn)u,后面如果跟的不是4個(gè)數(shù)字,也會(huì)報(bào)錯(cuò))表示將字符轉(zhuǎn)換成對(duì)應(yīng)的unicode編碼,字符類(lèi)型要用單引號(hào)括起來(lái)。 4、黙認(rèn)浮點(diǎn)類(lèi)型為double,float數(shù)據(jù)類(lèi)型有一個(gè)后綴為 f 或 F 。 5、long類(lèi)型有一個(gè)后綴,為 l 或者 L 引用數(shù)據(jù)類(lèi)型:類(lèi)、接口、數(shù)組引用類(lèi)型 變量名 = new 引用類(lèi)型名(參數(shù));/new后面一般跟的都是類(lèi)的構(gòu)造器成員:寫(xiě)在類(lèi)體括號(hào)里面的內(nèi)存空間的分配:內(nèi)存分為:棧:存放簡(jiǎn)單數(shù)據(jù)類(lèi)型變量(值和變量名都存在棧中),存放引用數(shù)據(jù)類(lèi)型的變量名以及它所指向的實(shí)例的首地址堆:存放引用數(shù)據(jù)類(lèi)型的實(shí)例局部變量:不是聲明在類(lèi)體括號(hào)里面的變量(1)必須要先賦值,后使用,否則通不過(guò)編譯,局部變量沒(méi)有默認(rèn)初始化值(2)作用范圍:定義開(kāi)始到定義它的代碼塊結(jié)束(3)同一范圍內(nèi),不允許2個(gè)局部變量命名沖突參數(shù)傳遞時(shí),簡(jiǎn)單類(lèi)型進(jìn)行值轉(zhuǎn)遞(參數(shù)進(jìn)行傳遞時(shí)都會(huì)先去棧中生成一個(gè)副本的,使用結(jié)束后釋放)自動(dòng)類(lèi)型提升:byte a = 1;byte b = 2;a = a+b; /編譯出錯(cuò)自動(dòng)類(lèi)型提升成inta += b; /自加沒(méi)有自動(dòng)類(lèi)型提升問(wèn)題類(lèi)型自動(dòng)提升規(guī)則:a和b作某種運(yùn)算a和b中有double,結(jié)果就是doublea和b中有float,結(jié)果就是floata和b中有l(wèi)ong,結(jié)果就是long除此之外,結(jié)果都是int把高字節(jié)轉(zhuǎn)成低字節(jié),需要作強(qiáng)制類(lèi)型轉(zhuǎn)換. byte c=(byte)a+b;移位運(yùn)算符:效率最高 有符號(hào)右移,補(bǔ)符號(hào)位 移負(fù)數(shù)位,則將該數(shù)值加32后再進(jìn)行移位 數(shù)值的2進(jìn)制是按照補(bǔ)碼保存的 右移后高位都補(bǔ)0邏輯運(yùn)算符:&/|也可以作為邏輯運(yùn)算符&先判斷前面一個(gè)條件,如果為假,則不用計(jì)算后一個(gè)條件|先判斷前面一個(gè)條件,如果為真,則不用計(jì)算后一個(gè)條件 + 運(yùn)算符:兩個(gè)操作的對(duì)象是數(shù)值時(shí),是加法如果有一個(gè)是字符串時(shí),則是字符串的連接流程控制語(yǔ)句:同Core C+switch中的變量類(lèi)型只能是byte、 short、int、char四種類(lèi)型數(shù)組:聲明數(shù)組: 數(shù)組能以下列形式聲明: 類(lèi)型 array; 類(lèi)型 array; 注:JAVA中推薦用:類(lèi)型 array;一個(gè)數(shù)組是一個(gè)對(duì)象聲明一個(gè)數(shù)組沒(méi)有創(chuàng)建一個(gè)對(duì)象聲明時(shí)不用指定長(zhǎng)度創(chuàng)建數(shù)組:創(chuàng)建基本數(shù)據(jù)類(lèi)型數(shù)組:int i = new int2; 創(chuàng)建引用數(shù)據(jù)類(lèi)型數(shù)組:Student s = new Student100; 數(shù)組創(chuàng)建后其中的元素有初始值類(lèi)型 黙認(rèn)值 byte 0 short 0 int 0 long 0l float 0.0f double 0.0d char u0000boolean false reference types null注:創(chuàng)建時(shí)一定要指定長(zhǎng)度int i2=new int; /error初始化數(shù)組: 聲明、創(chuàng)建、初始化分開(kāi): int i; /定義數(shù)組i = new int2; /分配空間i0 = 0; /初始化i1 = 1; 聲明、創(chuàng)建、初始化在同一時(shí)間 :int i = 0,1; /顯示初始化 中有幾個(gè)值,則數(shù)組長(zhǎng)度為幾Student s = new Student(),new Student(); 注:int i=new int1,2,3; /后面中不可以寫(xiě)數(shù)值 int i1=new int31,2,3; /error 二維數(shù)組:(其實(shí)是一個(gè)一維數(shù)組,它的每一個(gè)元素又是一個(gè)一維數(shù)組)int i1 = new int23; int i4 = 1,1,1,2,2,2,3,3,3;int i3 = new int3;/不允許高維沒(méi)分配空間而先給低維分配空間int i2 = new int2; i20 = new int2;i21 = new int3; 數(shù)組長(zhǎng)度:數(shù)組的屬性length數(shù)組長(zhǎng)度一旦確定,不可改變 int i = new int5; 則i.length= 5數(shù)組拷貝:系統(tǒng)類(lèi)System提供的static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) src: 源數(shù)組srcPos: 從源數(shù)組哪個(gè)位置開(kāi)始拷貝(位置指的是元素的下標(biāo))dest: 目標(biāo)數(shù)組destPos: 拷貝的元素放到目標(biāo)數(shù)組的起始位置length: 拷貝多少個(gè)數(shù)組排序:自己實(shí)現(xiàn)一個(gè)排序方法來(lái)進(jìn)行排序或者調(diào)用java.util.Arrays.sort(Object o)類(lèi)和對(duì)象:類(lèi):主觀抽象,是對(duì)象的模板,可以實(shí)例化對(duì)象習(xí)慣上類(lèi)的定義格式:package xxx;import xxx;public class Xxxx屬性(成員變量) ;構(gòu)造器(構(gòu)造方法或構(gòu)造函數(shù)) ;方法(成員方法) ;定義屬性:實(shí)例變量格式: 修飾符 類(lèi)型 變量名 = ? 實(shí)例變量定義在類(lèi)中但在任何方法之外。實(shí)例變量有默認(rèn)值:各種各樣的0。(同數(shù)組)實(shí)例變量的作用域至少在本類(lèi)內(nèi)部,受訪問(wèn)控制符的限制。在重合作用域,實(shí)例變量和局部變量允許有命名沖突,“局部?jī)?yōu)先”。定義方法:格式: 修飾符 返回類(lèi)型 方法名( 參數(shù)列表 ) throws 異常 java中所有參數(shù)都是值傳遞。 當(dāng)沒(méi)有值返回時(shí),返回類(lèi)型必須被定義為void。 返回類(lèi)型必須與方法名相鄰,其他修飾符可以調(diào)換位置。構(gòu)造器:在創(chuàng)建對(duì)象的過(guò)程中調(diào)用的方法。構(gòu)造器沒(méi)有返回類(lèi)型。構(gòu)造器的名字與類(lèi)名相同。格式為: 修飾符 類(lèi)名( 參數(shù)列表 ) ,修飾符可以是private、 protected、 default、private在一個(gè)對(duì)象的生成周期中構(gòu)造器只用一次,由系統(tǒng)自動(dòng)調(diào)用,不允許手工調(diào)用。程序員沒(méi)有提供一個(gè)構(gòu)造器,系統(tǒng)會(huì)自動(dòng)提供一個(gè)無(wú)參的構(gòu)造器。獲得對(duì)象的方式:通過(guò)new(在堆空間中申請(qǐng)分配空間),new 類(lèi)名(),可以通過(guò)這種形式或的一個(gè)對(duì)象,這時(shí)的對(duì)象是無(wú)法使用,必須把他的地址存放進(jìn)一個(gè)對(duì)象變量才能夠使用。例如 :Car c=new Car();注意:最好在寫(xiě)類(lèi)時(shí)提供一個(gè)無(wú)參的構(gòu)造器。this關(guān)鍵字:this是個(gè)隱式參數(shù),代表當(dāng)前對(duì)象;publie class Studentprivate String name;public void setName(String name)=name;/為當(dāng)前對(duì)象的成員變量如果某個(gè)構(gòu)造方法的第一個(gè)語(yǔ)句具有形式this( ),那么這個(gè)構(gòu)造方法將調(diào)用同一類(lèi)中的其他構(gòu)造方法。注意:在構(gòu)造器中this(.)必須放在該構(gòu)造器的第一行。this不能出現(xiàn)在靜態(tài)方法里面。類(lèi)、對(duì)象、實(shí)例三者的關(guān)系:類(lèi):是對(duì)象的模板,可以實(shí)例化對(duì)象對(duì)象:類(lèi)的個(gè)體實(shí)例:實(shí)現(xiàn)的對(duì)象student s;s=new student();其中 Student為類(lèi),s為對(duì)象,new Student()為實(shí)例,s賦值后也是實(shí)例了。方法重載:方法名相同,參數(shù)表不同,不考慮返回值類(lèi)型(但最好還是使返回類(lèi)型一致)。編譯器根據(jù)參數(shù),選擇一個(gè)方法,如果沒(méi)有完全匹配的,對(duì)于參數(shù)表采用“向上就近匹配原則”,但不允許模棱兩可。方法重載屏蔽了一個(gè)對(duì)象的同一類(lèi)方法由于參數(shù)不同所造成的差異。封裝:類(lèi)的屬性加private修飾符,來(lái)限制只能夠在類(lèi)的內(nèi)部進(jìn)行訪問(wèn),有效的保護(hù)數(shù)據(jù)。對(duì)于類(lèi)中的私有屬性,要對(duì)其給出一對(duì)方法getXxx(),setXxx()訪問(wèn)私有屬性,保證對(duì)私有屬性的操作的安全性。方法公開(kāi)的是方法的聲明,即只須知道參數(shù)和返回值就可以調(diào)用該方法,隱藏方法的實(shí)現(xiàn)的細(xì)節(jié)。一個(gè)對(duì)象和外界的聯(lián)系應(yīng)當(dāng)通過(guò)一個(gè)統(tǒng)一的接口,應(yīng)當(dāng)公開(kāi)的公開(kāi),應(yīng)當(dāng)隱藏的隱藏。繼承:父類(lèi)到子類(lèi)是從一般到特殊的關(guān)系。泛化:將不同子類(lèi)中的共性抽象成父類(lèi)的過(guò)程。特化:在原有父類(lèi)的基礎(chǔ)上加入一些個(gè)性的過(guò)程。原則:父類(lèi)放共性,子類(lèi)放個(gè)性。繼承的關(guān)鍵字:extendsJava只支持單繼承:一個(gè)類(lèi)最多只有一個(gè)直接的父類(lèi)。方法覆蓋:方法名:相同參數(shù)表:相同訪問(wèn)限制符:相同或者更寬返回值類(lèi)型:相同或者子類(lèi)返回的類(lèi)型是父類(lèi)返回的類(lèi)型的子類(lèi)(在JDK5.0以后)拋出的異常:不能比父類(lèi)更寬。 super關(guān)鍵字:super()表示調(diào)用父類(lèi)的構(gòu)造器super()也和this()一樣必須放在方法的第一句super()和this()不能同時(shí)出現(xiàn) super可以屏蔽子類(lèi)屬性和父類(lèi)屬性重名時(shí)帶來(lái)的屬性遮蓋,super. 表示調(diào)用父類(lèi)的方法或?qū)傩栽谧宇?lèi)的構(gòu)造器中如果沒(méi)有指定調(diào)用父類(lèi)的哪一個(gè)構(gòu)造器,那么就會(huì)調(diào)用父類(lèi)的無(wú)參構(gòu)造器,即super()注意: 父類(lèi)的構(gòu)造器不能被子類(lèi)繼承 方法和屬性可以被繼承,權(quán)限不限制能否繼承過(guò)來(lái),限制的是能否直接訪問(wèn) 先構(gòu)造父類(lèi),后構(gòu)造子類(lèi),先this后super多態(tài):多態(tài)分為兩種:編譯時(shí)多態(tài)和運(yùn)行時(shí)多態(tài)。編譯時(shí)類(lèi)型:主觀概念,把它看作什么。運(yùn)行時(shí)類(lèi)型:客觀概念,實(shí)際它是什么。 例:Animal a=new Dog(); /指著狗問(wèn),這個(gè)動(dòng)物是什么? 運(yùn)行時(shí)多態(tài)的三原則:1:對(duì)象類(lèi)型不變。2:只能對(duì)對(duì)象調(diào)用編譯時(shí)類(lèi)型中定義的方法。3:在程序的運(yùn)行時(shí),根據(jù)對(duì)象的運(yùn)行時(shí)類(lèi)型,找覆蓋后的方法來(lái)調(diào)用。(運(yùn)行時(shí)動(dòng)態(tài)類(lèi)型綁定)多態(tài)的作用:把不同的子類(lèi)對(duì)象都當(dāng)作父類(lèi)來(lái)看,可以屏蔽不同子類(lèi)對(duì)象之間的差異,寫(xiě)出通用的代碼,做出通用的編程,以適應(yīng)需求的不斷變化。強(qiáng)制類(lèi)型轉(zhuǎn)換: 一定沒(méi)有新對(duì)象生成。(父類(lèi)的引用賦值給子類(lèi)的引用需要進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換) 關(guān)鍵字:instanceof 用法:引用 instanceof 類(lèi)名 判斷這個(gè)引用所指向的對(duì)象是否屬于這個(gè)類(lèi)。 用在強(qiáng)制轉(zhuǎn)換之前,避免類(lèi)型轉(zhuǎn)換異常。if(a instanceof Dog)Dog d=(Dog)a;內(nèi)部類(lèi):定義:定義在另外一個(gè)類(lèi)中的類(lèi),就是內(nèi)部類(lèi)。編譯后生成的兩個(gè)獨(dú)立的類(lèi):Outer.class 和Outer$Inner.class。內(nèi)部類(lèi)的分類(lèi):靜態(tài)內(nèi)部類(lèi):靜態(tài)內(nèi)部類(lèi)定義在類(lèi)中,任何方法外,用static修飾靜態(tài)內(nèi)部類(lèi)只能訪問(wèn)外部類(lèi)的靜態(tài)成員。在外部類(lèi)的外部,要?jiǎng)?chuàng)建一個(gè)靜態(tài)內(nèi)部類(lèi)對(duì)象不需要外部類(lèi)對(duì)象:Outer.Inner in = new Outer.Inner();在本類(lèi)內(nèi)部生成內(nèi)部類(lèi)對(duì)象的方式:Inner in = new Inner();成員內(nèi)部類(lèi):作為外部類(lèi)的一個(gè)成員存在,與外部類(lèi)的屬性、方法并列在內(nèi)部類(lèi)中可以直接訪問(wèn)外部類(lèi)的私有屬性。內(nèi)部類(lèi)和外部類(lèi)的實(shí)例變量允許命名沖突。在內(nèi)部類(lèi)中訪問(wèn)實(shí)例變量:this.屬性在內(nèi)部類(lèi)訪問(wèn)外部類(lèi)的實(shí)例變量:外部類(lèi)名.this.屬性在外部類(lèi)的外部,要?jiǎng)?chuàng)建一個(gè)成員內(nèi)部類(lèi)對(duì)象,要首先建立一個(gè)外部類(lèi)對(duì)象,然后再創(chuàng)建一個(gè)成員內(nèi)部類(lèi)對(duì)象。 Outer out = new Outer(); Outer.Inner in = out.new Inner(); 在本類(lèi)內(nèi)部生成內(nèi)部類(lèi)對(duì)象的方式:在靜態(tài)方法中:Inner in = new Outer().new Inner();在非靜態(tài)方法中:Inner in = this.new Inner();成員內(nèi)部類(lèi)不可以有靜態(tài)成員,這是因?yàn)殪o態(tài)屬性是在加載類(lèi)的時(shí)候創(chuàng)建,這個(gè)時(shí)候內(nèi)部類(lèi)還沒(méi)有被創(chuàng)建。局部?jī)?nèi)部類(lèi):在外部類(lèi)的方法中定義的內(nèi)部類(lèi)與局部變量類(lèi)似,在局部?jī)?nèi)部類(lèi)前不可以加修飾符public和private,其作用域?yàn)槎x它的代碼塊。局部?jī)?nèi)部類(lèi)不僅可以訪問(wèn)外部類(lèi)的實(shí)例變量,還可以訪問(wèn)外部類(lèi)的局部變量,但要求外部類(lèi)的局部變量必須為final的。 配合接口使用,來(lái)做到強(qiáng)制弱耦合。 在外部類(lèi)的外部不可創(chuàng)建局部?jī)?nèi)部類(lèi)對(duì)象,只能在局部?jī)?nèi)部類(lèi)所在的方法中創(chuàng)建:Inner in = new Inner();匿名內(nèi)部類(lèi):一種特殊的局部?jī)?nèi)部類(lèi)沒(méi)有名字,也沒(méi)有class、extends、implements關(guān)鍵字用一種隱含的方式實(shí)現(xiàn)一個(gè)接口或繼承一個(gè)類(lèi),并且只能創(chuàng)建一次實(shí)例。實(shí)現(xiàn)方式:在某個(gè)語(yǔ)句中,new 父類(lèi)/父接口名字() 類(lèi)體中實(shí)現(xiàn)方法 例如:TreesSet ts = new TreeSet(new Comparator()public int compare(Object o1, Object o2) return 0; );匿名內(nèi)部類(lèi)屬于局部?jī)?nèi)部類(lèi),那么局部?jī)?nèi)部類(lèi)的所有限制都對(duì)其生效。匿名內(nèi)部類(lèi)是唯一一種無(wú)構(gòu)造方法的類(lèi),因?yàn)闃?gòu)造器的名字必須合類(lèi)名相同,而匿名內(nèi)部類(lèi)沒(méi)有類(lèi)名。修飾符static: 把對(duì)象相關(guān)的變成類(lèi)相關(guān)的,它可以修飾屬性、方法、代碼塊和內(nèi)部類(lèi)static修飾屬性(類(lèi)變量):那么這個(gè)屬性就可以用 類(lèi)名.屬性名 來(lái)訪問(wèn),也就是使這個(gè)屬性成為本類(lèi)的類(lèi)變量,為本類(lèi)對(duì)象所共享。類(lèi)加載的過(guò)程,類(lèi)本身也是保存在文件中(字節(jié)碼文件保存著類(lèi)的信息)的,java會(huì)通過(guò)I/O流把類(lèi)的文件讀入JVM(java虛擬機(jī)),這個(gè)過(guò)程稱(chēng)為類(lèi)的加載。JVM會(huì)通過(guò)類(lèi)路徑(CLASSPATH)來(lái)找字節(jié)碼文件。需要的時(shí)候才會(huì)進(jìn)行類(lèi)加載,生成對(duì)象時(shí)是先加載后構(gòu)造類(lèi)變量,會(huì)在加載時(shí)自動(dòng)初始化,初始化規(guī)則和實(shí)例變量相同。注意:類(lèi)中的實(shí)例變量是在創(chuàng)建對(duì)象時(shí)被初始化的static修飾的屬性,是在類(lèi)加載時(shí)被創(chuàng)建并進(jìn)行初始化,類(lèi)加載的過(guò)程只進(jìn)行一次,也就是類(lèi)變量只會(huì)被創(chuàng)建一次。static修飾方法(靜態(tài)方法):會(huì)使這個(gè)方法成為整個(gè)類(lèi)所公有的方法,可以用 類(lèi)名.方法名 訪問(wèn)。static修飾的方法,不能直接訪問(wèn)本類(lèi)中的非靜態(tài)成員,但本類(lèi)的非靜態(tài)方法可以訪問(wèn)本類(lèi)的靜態(tài)成員。 在靜態(tài)方法中不能出現(xiàn)this關(guān)鍵字。父類(lèi)中是靜態(tài)方法,子類(lèi)中不能覆蓋為非靜態(tài)方法,在符合覆蓋規(guī)則的前提下,在父子類(lèi)中,父類(lèi)中的靜態(tài)方法可以被子類(lèi)中的靜態(tài)方法覆蓋,但是沒(méi)有多態(tài)。(在使用對(duì)象調(diào)用靜態(tài)方法時(shí)其實(shí)是調(diào)用編譯時(shí)類(lèi)型的靜態(tài)方法)java中的main方法必須寫(xiě)成static的原因:在類(lèi)加載時(shí)無(wú)法創(chuàng)建對(duì)象,而靜態(tài)方法可以不通過(guò)對(duì)象調(diào)用,所以在類(lèi)加載時(shí)就可以通過(guò)main方法入口來(lái)運(yùn)行程序。static修飾初始代碼塊:這時(shí)這個(gè)初始代碼塊就叫做靜態(tài)初始代碼塊,這個(gè)代碼塊只在類(lèi)加載時(shí)被執(zhí)行一次。可以用靜態(tài)初始代碼塊初始化一個(gè)類(lèi)。動(dòng)態(tài)初始代碼塊,寫(xiě)在類(lèi)體中的“”,這個(gè)代碼塊是在生成對(duì)象時(shí)運(yùn)行,這種代碼塊叫動(dòng)態(tài)初始代碼塊。單例設(shè)計(jì)模式:一個(gè)類(lèi)只允許有一個(gè)對(duì)象,保證所有引用的對(duì)象都是同一個(gè)對(duì)象。因?yàn)橹辉试S存在一個(gè)對(duì)象,則不允許在外面直接new出新的對(duì)象,所以應(yīng)該把構(gòu)造器設(shè)為private,。在類(lèi)內(nèi)定義一個(gè)公開(kāi)的靜態(tài)方法,讓使用者進(jìn)行調(diào)用,通過(guò)該方法去獲得一個(gè)實(shí)例。例:public calss Singletonprivate static Singleton s;private Singleton()public static Singleton newInstance()if ( s = null)s = new Singleton();return s;修飾符final:不允許改變,可以修飾變量、方法、類(lèi)final修飾變量:被fianl修飾的變量就會(huì)變成常量,一旦賦值不能改變常量可以在初始化時(shí)直接賦值,也可以在構(gòu)造方法里賦值,只能在這兩種方法里二選一,不能不為常量賦值常量不會(huì)有默認(rèn)初始值鎖定棧,使棧中的數(shù)據(jù)不可以改變靜態(tài)常量只能在初始化時(shí)直接賦值final修飾方法:被final修飾的方法將不能被其子類(lèi)覆蓋,保持方法的穩(wěn)定不能被覆蓋final修飾類(lèi):被final修飾的類(lèi)將不能被繼承final類(lèi)中的方法也都是final的注意:final不能用來(lái)修飾構(gòu)造方法訪問(wèn)權(quán)限控制:private:本類(lèi)內(nèi)部可以訪問(wèn)不能繼承到子類(lèi)default:本類(lèi)內(nèi)部可以訪問(wèn),同包其他類(lèi)也可以訪問(wèn)。同包可繼承protected:本類(lèi)內(nèi)部可以訪問(wèn),不同包的子類(lèi)也可以訪問(wèn),同包其他類(lèi)也可以訪問(wèn)。能繼承到子類(lèi)public:任何地方都可以訪問(wèn) 能繼承到子類(lèi)修飾符abstract:抽象的,定義框架不去實(shí)現(xiàn),可以修飾類(lèi)和方法abstract修飾類(lèi):會(huì)使這個(gè)類(lèi)成為一個(gè)抽象類(lèi),這個(gè)類(lèi)將不能生成對(duì)象實(shí)例,但可以做為對(duì)象變量聲明的類(lèi)型,也就是編譯時(shí)類(lèi)型抽象類(lèi)就相當(dāng)于一個(gè)類(lèi)的半成品,需要子類(lèi)繼承并覆蓋其中的抽象方法,這時(shí)子類(lèi)才又創(chuàng)建實(shí)例的能力,如果子類(lèi)沒(méi)有實(shí)現(xiàn)父類(lèi)的抽象方法,那么子類(lèi)也要為抽象類(lèi)。abstract修飾方法:會(huì)使這個(gè)方法變成抽象方法,也就是只有聲明而沒(méi)有實(shí)現(xiàn),實(shí)現(xiàn)部分以;代替,需要子類(lèi)繼承實(shí)現(xiàn)。抽象方法代表了某種標(biāo)準(zhǔn),定義標(biāo)準(zhǔn),定義功能,在子類(lèi)中去實(shí)現(xiàn)功能(子類(lèi)繼承了父類(lèi)并需要給出從父類(lèi)繼承的抽象方法的實(shí)現(xiàn))。方法一時(shí)間想不到怎么被實(shí)現(xiàn),或有意要子類(lèi)去實(shí)現(xiàn)而定義某種標(biāo)準(zhǔn),這個(gè)方法可以被定義為抽象。注意:有抽象方法的類(lèi)一定是抽象類(lèi)。但是抽象類(lèi)中不一定都是抽象方法,也可以全是具體方法。接口(interface):接口的定義:接口從本質(zhì)上說(shuō)是一種特殊的抽象類(lèi)。關(guān)鍵字interface。在接口中,所有的方法為公開(kāi)、抽象的方法:public abstract在接口中,所有的屬性都是公開(kāi)、靜態(tài)的常量:public static final接口與接口之間可以多繼承,用extends,多個(gè)之間用逗號(hào)隔開(kāi)。接口中沒(méi)有構(gòu)造方法,不能用“new 接口名”來(lái)實(shí)例化一個(gè)接口,但可以聲明一個(gè)接口。接口的實(shí)現(xiàn):關(guān)鍵字implements一個(gè)類(lèi)實(shí)現(xiàn)一個(gè)接口必須實(shí)現(xiàn)接口中所有的方法,否則其為抽象類(lèi),并且在實(shí)現(xiàn)類(lèi)中的方法要加上public(不能省略)。類(lèi)中的默認(rèn)修飾符:default。接口中的默認(rèn)修飾符:public。一個(gè)類(lèi)除了繼承另一個(gè)類(lèi)外(只能繼承一個(gè)類(lèi)),還可以實(shí)現(xiàn)多個(gè)接口(接口之間用逗號(hào)分隔)。接口的作用:間接實(shí)現(xiàn)多繼承:用接口來(lái)實(shí)現(xiàn)多繼承并不會(huì)增加類(lèi)關(guān)系的復(fù)雜度。因?yàn)榻涌诓皇穷?lèi),與類(lèi)不在一個(gè)層次上,是在類(lèi)的基礎(chǔ)上進(jìn)行再次抽象。接口可以抽象出次要類(lèi)型,分出主、次關(guān)系類(lèi)型,符合看世界的一般方法。接口隔離,與封裝性有關(guān)。一個(gè)對(duì)象都有多個(gè)方面,可以只展示其中幾個(gè)方面,其他的都隱藏。因此可以看為“更高層次的封裝”,把一個(gè)大接口做成若干個(gè)小接口。通過(guò)接口制定標(biāo)準(zhǔn)(最重要的作用)接口:制定標(biāo)準(zhǔn)。接口的調(diào)用者:使用標(biāo)準(zhǔn)。接口的實(shí)現(xiàn)類(lèi):實(shí)現(xiàn)標(biāo)準(zhǔn)。解耦合作用:把使用標(biāo)準(zhǔn)和實(shí)現(xiàn)標(biāo)準(zhǔn)分開(kāi),使得標(biāo)準(zhǔn)的制定者和實(shí)現(xiàn)者解除偶合關(guān)系,具有極強(qiáng)的可移植性例:sun公司提供一套訪問(wèn)數(shù)據(jù)庫(kù)的接口(標(biāo)準(zhǔn)),java程序員訪問(wèn)數(shù)據(jù)庫(kù)時(shí)針對(duì)數(shù)據(jù)庫(kù)接口編程。接口由各個(gè)數(shù)據(jù)庫(kù)廠商負(fù)責(zé)實(shí)現(xiàn)。接口編程的原則盡量針對(duì)接口編程(能用接口就盡量用接口)接口隔離原則(用若干個(gè)小接口取代一個(gè)大接口)注意:接口中沒(méi)有構(gòu)造器,也沒(méi)有main方法封裝類(lèi):Java為每一個(gè)簡(jiǎn)單數(shù)據(jù)類(lèi)型提供了一個(gè)封裝類(lèi)。除int和char,其余類(lèi)型首字母大寫(xiě)即成封裝類(lèi)。int Integerchar Character最常用的兩個(gè)封裝類(lèi)Integer和Doublejdk1.4之前基本類(lèi)型和封裝類(lèi)的轉(zhuǎn)化是需要構(gòu)造器去轉(zhuǎn)化的,到了jdk1.5是自動(dòng)進(jìn)行轉(zhuǎn)化的int、Integer和String之間的轉(zhuǎn)化(最常用的)int i=1;Integer in = new Integer(i);/int - Integer int i = Value();/Integer - int String str = String.valueOf(i);/Int - Stringint ii = Integer.parseInt(str);/String - intString s = in.toString();/Integer - StringInteger inte = Integer.valueOf(str);/String - Integer Object類(lèi):hashCode():返回該對(duì)象的哈希碼值hashCode 的常規(guī)協(xié)定是: 在 Java 應(yīng)用程序執(zhí)行期間,在同一對(duì)象上多次調(diào)用 hashCode 方法時(shí),必須一致地返回相同的整數(shù),前提是對(duì)象上 equals 比較中所用的信息沒(méi)有被修改。如果根據(jù) equals(Object) 方法,兩個(gè)對(duì)象是相等的,那么在兩個(gè)對(duì)象中的每個(gè)對(duì)象上調(diào)用 hashCode 方法都必須生成相同的整數(shù)結(jié)果。 toString():返回該對(duì)象的字符串表示。通常,toString 方法會(huì)返回一個(gè)“以文本方式表示”此對(duì)象的字符串。結(jié)果應(yīng)是一個(gè)簡(jiǎn)明但易于讀懂。建議所有子類(lèi)都重寫(xiě)此方法。equals():指示某個(gè)其他對(duì)象是否與此對(duì)象“相等”。 equals 方法在非空對(duì)象引用上實(shí)現(xiàn)相等關(guān)系: 自反性:對(duì)于任何非空引用值 x,x.equals(x) 都應(yīng)返回 true。 對(duì)稱(chēng)性:對(duì)于任何非空引用值 x 和 y,當(dāng)且僅當(dāng) y.equals(x) 返回 true 時(shí),x.equals(y) 才應(yīng)返回 true。 傳遞性:對(duì)于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 應(yīng)返回 true。 一致性:對(duì)于任何非空引用值 x 和 y,多次調(diào)用 x.equals(y)始終返回 true 或始終返回 false,前提是對(duì)象上 equals 比較中所用的信息沒(méi)有被修改。對(duì)于任何非空引用值 x,x.equals(null) 都應(yīng)返回 false。 注意:當(dāng)此方法被重寫(xiě)時(shí),通常有必要重寫(xiě) hashCode 方法,以維護(hù) hashCode 方法的常規(guī)協(xié)定,該協(xié)定聲明相等對(duì)象必須具有相等的哈希碼。 String、StringBuffer和StringBulder:String: 不可改變的Unicode字符序列池化思想,把需要共享的數(shù)據(jù)放在池中,用一個(gè)存儲(chǔ)區(qū)域來(lái)存放一些公用資源以減少存儲(chǔ)空間的開(kāi)銷(xiāo)。在String類(lèi)中,以字面值創(chuàng)建時(shí),會(huì)到Java方法空間的串池中去查找,如果沒(méi)有則會(huì)在串池里創(chuàng)建一個(gè)字符串對(duì)象,并返回其地址賦給對(duì)象變量,如果有就返回串池中字符串的地址,并把這個(gè)地址賦給對(duì)象變量。如果是new,則會(huì)在堆空間中創(chuàng)建String類(lèi)的對(duì)象,不會(huì)有上述的過(guò)程如:String s1= abc;/新創(chuàng)建,字符串常量池中沒(méi)有該串,則會(huì)在池中創(chuàng)建一個(gè)串a(chǎn)bcString s2=abc;/串池中已經(jīng)存在abc,則s2會(huì)去指向abc而不會(huì)去創(chuàng)建一個(gè)新的String s3=new String(abc);/直接在堆中去開(kāi)辟一個(gè)新的空間,而不會(huì)去池中查找String的低層實(shí)現(xiàn)是用的char數(shù)組類(lèi)中的具體方法查看下API文檔。調(diào)用任何String中的方法,不會(huì)改變String自身,除非重新賦值。StringBuffer: 可改變的Unicode字符序列允許并發(fā)操作,是線程安全的String類(lèi)在進(jìn)行字符串連接時(shí)會(huì)顯得效率很低,就是因?yàn)樗a(chǎn)生的對(duì)象的屬性是不能夠修改的,當(dāng)連接字符串時(shí)也就只能創(chuàng)建新的對(duì)象。對(duì)于很多字符串連接時(shí),應(yīng)當(dāng)使用StringBuffer類(lèi),使用這個(gè)類(lèi)的對(duì)象來(lái)進(jìn)行字符串連接時(shí)就不會(huì)有多余的中間對(duì)象生成,從而優(yōu)化了效率。例:對(duì)于字符串連接String str = A + B + C + D;產(chǎn)生:AB、ABC、ABCD在串池中產(chǎn)生的AB、ABC明顯是多余對(duì)象,浪費(fèi)空間。在J2ME中應(yīng)少使用String,最好用StringBuffer取代。 解決方案: String s = null; StringBuffer sb = new StringBuffer(A); sb.append(B); sb.append(C); sb.append(D); s = sb.toString();StringBulder: 可改變的Unicode字符序列操作同StringBuffer,只是不支持并發(fā)操作,非線程安全的異常:異常的分類(lèi): Java會(huì)將所有的異常封裝成對(duì)象,其根本父類(lèi)為T(mén)hrowable。 Throwable有兩個(gè)子類(lèi):Error 和Exception。Error:一個(gè)Error對(duì)象表示一個(gè)程序錯(cuò)誤,指的是底層的低級(jí)的不可恢復(fù)的嚴(yán)重錯(cuò)誤遇到Error,程序一定會(huì)退出,因?yàn)橐呀?jīng)失去了運(yùn)行所必須的物理環(huán)境。對(duì)于Error我們無(wú)法進(jìn)行處理,因?yàn)槲覀兪峭ㄟ^(guò)程序來(lái)應(yīng)對(duì)錯(cuò)誤的,可是程序已經(jīng)退出了。 Exception:由特定因素,導(dǎo)致程序無(wú)法繼續(xù),但不影響虛擬機(jī)的正常執(zhí)行。未檢查異常(Runtime Exception):是因?yàn)槌绦騿T沒(méi)有進(jìn)行必要的檢查,由于程序員的疏忽而引起的異常。對(duì)于未檢查異??梢圆惶幚?,編譯可以通過(guò),應(yīng)對(duì)未檢查異常的方法就是養(yǎng)成良好的檢查習(xí)慣已檢查異常(非Runtime Exception):是不可避免的,對(duì)于已檢查異常必須處理,否則編譯不通過(guò)。異常處理的機(jī)制:當(dāng)一個(gè)方法中有一條語(yǔ)句出現(xiàn)了異常,它就會(huì)throw(拋出)一個(gè)異常對(duì)象(throw 異常對(duì)象),然后后面的語(yǔ)句不會(huì)執(zhí)行,而返回上一級(jí)方法,其上一級(jí)方法接受到了異常對(duì)象之后,有可能對(duì)這個(gè)異常進(jìn)行處理(進(jìn)行處理則不會(huì)上拋),也可能將這個(gè)異常傳到它的上一級(jí),如果最上一級(jí)(main方法)不處理就會(huì)傳給虛擬機(jī),虛擬機(jī)就會(huì)終止程序的運(yùn)行。異常的處理方式:throws和try-catch方法(在J2ME中try.catch也是占用資源的語(yǔ)句,如果事先明白他會(huì)有什么異常盡量用if.else來(lái)進(jìn)行處理)try-catch處理方式:try/一個(gè) (1)可能出現(xiàn)異常的語(yǔ)句 catch(XxxException e /*捕獲的異常*/) /0或n個(gè) (2)處理異常的代碼 finally/0或1個(gè) (3)必須要執(zhí)行的代碼(4)方法中的其他代碼如果代碼正確,那么程序不經(jīng)過(guò)catch語(yǔ)句直接向下運(yùn)行;如果代碼不正確,則將返回的異常對(duì)象和e進(jìn)行匹配,如果匹配成功,則處理其后面的異常處理代碼。try中如果發(fā)現(xiàn)錯(cuò)誤,即跳出try塊去匹配catch,那么try后面的語(yǔ)句就不會(huì)被執(zhí)行。一個(gè)try可以跟多個(gè)catch語(yǔ)句,用于處理不同情況,但是不能將父類(lèi)型的exception的位置寫(xiě)在子類(lèi)型的excepiton之前。在try-catch后還可以再跟一子句finally。其中的代碼語(yǔ)句論有沒(méi)有異常都會(huì)被執(zhí)行(因?yàn)閒inally子句的這個(gè)特性,所以一般將釋放資源,關(guān)閉連接的語(yǔ)句寫(xiě)在里面)。finally中的代碼和try-catch中的代碼沖突時(shí),finally中的代碼一定會(huì)被執(zhí)行且會(huì)忽略try-catch中的代碼。但是如果try-catch中有System.exit(0);(虛擬機(jī)退出語(yǔ)句),則不會(huì)去執(zhí)行fianlly中的代碼。throws/throw處理方式:throw 寫(xiě)在方法內(nèi),后面跟一個(gè)異常對(duì)象。throws 在方法的定義中說(shuō)明方法可能拋出的異常,后面跟異常類(lèi)的名字,聲明這個(gè)方法將不處理異常,把異常交給上一級(jí)方法處理。調(diào)用時(shí),調(diào)用者不能拋出范圍更小的異常。對(duì)于方法a,如果它定義了throws Exception。那么當(dāng)它調(diào)用的方法b返回異常對(duì)象時(shí),方法a并不處理,而將這個(gè)異常對(duì)象向上一級(jí)返回,如果所有的方法均不進(jìn)行處理,返回到主方法,如主方法也不進(jìn)行處理,則到虛擬機(jī)中,程序中止。如果在方法的程序中有一行throw new Exception(),那么其后的程序不執(zhí)行,如果沒(méi)有對(duì)這個(gè)可能出現(xiàn)的檢查結(jié)果進(jìn)行處理,那么程序就會(huì)報(bào)錯(cuò)。throws和throw沒(méi)有必然的聯(lián)系。注意:方法的覆蓋中,如果子類(lèi)的方法拋出的例外是父類(lèi)方法拋出的例外的父類(lèi)型,那么編譯就會(huì)出錯(cuò):子類(lèi)無(wú)法覆蓋父類(lèi)。子類(lèi)拋出的例外或者與父類(lèi)拋出的例外一致,或者是父類(lèi)拋出例外的子類(lèi)型,或者子類(lèi)型不拋出例外。如果父類(lèi)型無(wú)throws時(shí),子類(lèi)型也不允許出現(xiàn)throws。此時(shí)只能使用try catch。多線程:進(jìn)程與線程:進(jìn)程:同一個(gè)操作系統(tǒng)中執(zhí)行的一個(gè)子程序,包含了三部分虛擬CPU、代碼、數(shù)據(jù)多進(jìn)程:同一個(gè)操作系統(tǒng)中執(zhí)行的多個(gè)并行的子程序??梢蕴岣遚pu的使用率線程:在同一個(gè)進(jìn)程當(dāng)中執(zhí)行的子程序流多線程:同一個(gè)進(jìn)程當(dāng)中并發(fā)執(zhí)行的多個(gè)子程序流。可以提高cpu的使用率 進(jìn)程與線程的區(qū)別:進(jìn)程有獨(dú)立的進(jìn)程空間,進(jìn)程中的數(shù)據(jù)存放空間(堆空間和棧空間)是獨(dú)立的。 線程的堆空間是共享的,棧空間是獨(dú)立的,線程消耗的資源也比進(jìn)程小,相互之間 可以影響的。Java中如何調(diào)進(jìn)程:調(diào)用本地程序的兩個(gè)類(lèi)RuntimeRuntime.getRuntime.exec(.);/執(zhí)行一個(gè)程序其返回值就是Process類(lèi)型Process注意:只有運(yùn)行狀態(tài)的線程才有機(jī)會(huì)執(zhí)行代碼,主線程的中止不會(huì)影響其他的正在運(yùn)行中 的

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論