隨筆 - 4, 文章 - 2, 評(píng)論 - 36, 引用 - 0
          數(shù)據(jù)加載中……

          一些JAVA學(xué)習(xí)筆記

          準(zhǔn)備工作
          1、JDKjava develop kit java開(kāi)發(fā)工具包;
          2、JREjava runtime environment, java 運(yùn)行時(shí)環(huán)境;
          3、JDK 的三個(gè)版本:
          J2SEjava標(biāo)準(zhǔn)版,桌面程序和小應(yīng)用程序的開(kāi)發(fā)
          J2EEjava企業(yè)版,企業(yè)級(jí)的開(kāi)發(fā)(WEB開(kāi)發(fā))
          J2ME:主要是手持移動(dòng)設(shè)備程序的開(kāi)發(fā);
          4、JAVA的特性:
          a 簡(jiǎn)單的
          java屏棄了c++中一些復(fù)雜的操作,如指針、結(jié)構(gòu)等
          b 面向?qū)ο蟮?/font>
          java是完全面向?qū)ο蟮?/font>
          c 健壯的
          java通過(guò)檢查編譯和運(yùn)行時(shí)的錯(cuò)誤來(lái)保證程序的可靠性
          java提供的垃圾回收機(jī)制,保證了內(nèi)存不會(huì)泄露
          d 安全的
          e 解釋的
          ? java是解釋執(zhí)行的,而不是編譯執(zhí)行的,通過(guò)生成java的字節(jié)碼,來(lái)解釋執(zhí)行
          f 平臺(tái)無(wú)關(guān)的
          ? java生成字節(jié)碼,由java解釋器來(lái)解釋
          g 多線程的
          ? 在語(yǔ)言級(jí)上支持多線程
          h 動(dòng)態(tài)的
          ? java將變量或方法的引用轉(zhuǎn)換成符號(hào)引用保存下來(lái),傳遞給解釋器,由解釋器來(lái)動(dòng)態(tài)決定其加載;
          5、java跨平臺(tái)的原理:
          ·java的跨平臺(tái)是通過(guò)JVM來(lái)實(shí)現(xiàn)的。Java的編譯器在編譯java的源代碼的時(shí),并不是將變量和方法的引用編譯為數(shù)值引用,也不確定內(nèi)存布局,而是將這些信息保存在字節(jié)碼中,由解釋器在運(yùn)行時(shí)候確定內(nèi)存布局。也就是說(shuō),java的編譯器生成的字節(jié)碼中,并不包含與特定硬件平臺(tái)相關(guān)的信息。
          ·java解釋器的執(zhí)行過(guò)程分為:字節(jié)碼的裝載、校驗(yàn)、執(zhí)行。在裝載過(guò)程中,由裝載器裝載字節(jié)碼,所有本地代碼都被裝載到同一個(gè)內(nèi)存命名空間里,而所有外部引用的代碼都有自己的內(nèi)存命名空間,本地代碼只是保存了對(duì)其引用的符號(hào)信息。當(dāng)所有字節(jié)碼都裝載完成后,java解釋器就確定了內(nèi)存布局。
          ·通過(guò)實(shí)現(xiàn)不同平臺(tái)下的JVM,來(lái)實(shí)現(xiàn)字節(jié)碼的跨平臺(tái);
          6、jdk\bin\jar.exe 可以對(duì)程序進(jìn)行打包、發(fā)布;
          7、在java中,文件名必須與被聲明為public的類相同,所以在java文件中,最多只能有一個(gè)public的類;
          8、java解釋器加載的是類,因此,對(duì)類名的大小寫是敏感的;
          9、/** …..*/這種注釋可以自動(dòng)生成一個(gè)注釋的文檔;
          10、當(dāng)定義了classpath后,java解釋器就會(huì)按照classpath進(jìn)行查找,而不查找當(dāng)前目錄,若想查找當(dāng)前,則在classpath中加入;
          11java提供了8種基本數(shù)據(jù)類型:
            byte 有符號(hào)的1字節(jié)的整數(shù) (-128---127
          注 byte類型參與運(yùn)算時(shí),java會(huì)將其類型自動(dòng)提升為int,
          如 byte a ; a= (byte)(a*2);

          ? ? short ? 有符號(hào)的2字節(jié)的整數(shù)  注 同上 
            ? int (4)
          ? long (8)    ? 注 默認(rèn)1.3這樣的數(shù),默認(rèn)為double

          ? ? ? float (4)
          ? ? ? double (8) ? ? ? ? ? ? ? ? ? ? ? ?
          ? ? char ? ? 無(wú)符號(hào)的2個(gè)字節(jié)  unicode編碼,表示
          ? boolean
          12java數(shù)組在定義時(shí),不能直接分配空間;
          Int[] array;
          Array={1,3}; //這種寫法是error
          13java中二維數(shù)組,列數(shù)可以不相同,實(shí)際上每一行都是一個(gè)一維數(shù)組;
          14int i=3 ,count;
          Count=(i++)+(i++)+(i++);
          Out: count=12;
          Count=(++i)+(++i)+(++i);
          Out: count=15;


          位運(yùn)算



          1、計(jì)算機(jī)數(shù)據(jù)常用16進(jìn)制表示;
          2、原碼:第一位為符號(hào)位,0表示正,1表示負(fù);
          反碼:正數(shù)的反碼是原碼本身,負(fù)數(shù)的反碼是符號(hào)位不變,其他各位按原碼取反;
          補(bǔ)碼:正數(shù)的補(bǔ)碼是原碼本身,負(fù)數(shù)的補(bǔ)碼是符號(hào)位不變,其他各位取反加1;
          3、計(jì)算機(jī)采用補(bǔ)碼進(jìn)行數(shù)據(jù)處理;
          4、位運(yùn)算符:
          & 按位與    只有兩位都為1時(shí),結(jié)果為1;
          | 按位或    兩位任意一位為1時(shí),結(jié)果為1;
          ^ ? 按位異或   只有兩位不同時(shí),結(jié)果才為1;
          ~ 按位取反   
          5、移位運(yùn)算符:
          << 左移
          >> 帶符號(hào)右移   (負(fù)數(shù):所有空位都補(bǔ)1)
          >>> 無(wú)符號(hào)右移
          6、API

          Java.lang.Integer. toHexString(int i);   //整型轉(zhuǎn)換為其對(duì)應(yīng)的十六進(jìn)制數(shù)
          7、移位運(yùn)算的效率要高于存儲(chǔ)運(yùn)算,在一些講求效率的程序中,應(yīng)考慮使用移位運(yùn)算;
          8、<<1 左移一位,相當(dāng)于乘以2
          >>1 右移一位,相當(dāng)于除以2






          Java的面向?qū)ο缶幊?/font>



          1、OOP:描述的是對(duì)象和對(duì)象之間的相互作用;
          2、面向過(guò)程和面向?qū)ο缶幊痰膮^(qū)別:
          ·面向過(guò)程編程,一般是先確定算法,然后考慮數(shù)據(jù)結(jié)構(gòu),而面向?qū)ο缶幊蹋瑒t是先確定數(shù)據(jù)結(jié)構(gòu),在設(shè)計(jì)算法;
          ·面向過(guò)程編程,往往是將數(shù)據(jù)保存到數(shù)據(jù)結(jié)構(gòu)中,并通過(guò)方法來(lái)操作數(shù)據(jù),而面向?qū)ο蟮木幊讨校瑒t是將數(shù)據(jù)和方法組織到一個(gè)對(duì)象中;
          3、類是對(duì)象的摸板,對(duì)象是類的實(shí)例;
          4、面向?qū)ο缶幊趟悸罚合葘F(xiàn)實(shí)世界實(shí)體抽象成對(duì)象,然后考慮解決的方法;
          5、類的構(gòu)造方法,沒(méi)有返回類型,名字與類名相同,構(gòu)造函數(shù)用于對(duì)類對(duì)象定義初始化狀態(tài),每個(gè)類必須有構(gòu)造函數(shù),若沒(méi)顯示定義,則java編譯器會(huì)自動(dòng)生成一個(gè)不含參數(shù)的構(gòu)造方法,若顯示定義,則java不會(huì)提供任何默認(rèn)構(gòu)造方法;
          6、new 關(guān)鍵字:
          ·為對(duì)象分配空間  ·引起構(gòu)造函數(shù)的調(diào)用  ·返回一個(gè)對(duì)象的引用
          7、方法的重載(OverLoad
          ·構(gòu)成重載的條件:方法名稱相同,參數(shù)個(gè)數(shù)或參數(shù)類型不同;
          8、this 關(guān)鍵字:
          ·this關(guān)鍵字代表著一個(gè)特定的類對(duì)象本身;
          ·this 只在方法內(nèi)部使用,代表調(diào)用方法的對(duì)象本身;
          ·this 可以簡(jiǎn)化構(gòu)造方法的調(diào)用this();
          9、java的成員方法在內(nèi)存中都只包含一份拷貝,被所有對(duì)象所共享;而成員變量則有多份拷貝,屬于不同對(duì)象所擁有。當(dāng)特定對(duì)象調(diào)用一個(gè)成員方法的時(shí)候,this被表示為指代該對(duì)象,去調(diào)用成員方法,然后與該對(duì)象的成員變量進(jìn)行關(guān)聯(lián);
          10static 關(guān)鍵字
          ·被定義為static的方法或變量,是屬于一個(gè)類的,而不屬于某一個(gè)對(duì)象的;
          ·static的方法或變量,在類加載的時(shí)候,就分配了內(nèi)存空間,并且在內(nèi)存中只有一份拷貝;
          ·在static的方法中,不可以引用非static的方法和變量,而在非static的方法中,可以引用static的方法或變量;
          ·static的方法和變量可以通過(guò)類和對(duì)象來(lái)引用(實(shí)質(zhì)還是通過(guò)類來(lái)引用)
          11final 關(guān)鍵字
          ? ·被聲明為final的常量,是不允許被修改的,并且在定義時(shí),就必須對(duì)其進(jìn)行初始化(實(shí)際也可以將初始化放到構(gòu)造函數(shù)中);
          ·常把final的常量,同時(shí)聲明為static,可以節(jié)約空間;
          12java中通過(guò)extends 實(shí)現(xiàn)繼承,不允許多繼承;
          13override
          在子類中實(shí)現(xiàn)一個(gè)與父類中,具有相同名稱,返回類型,參數(shù)的方法,稱為方法的重寫;
          14super 關(guān)鍵字
          ·super 提供了子類中訪問(wèn)被重寫或隱藏了的父類的方法或變量的方法;
          ·在子類的構(gòu)造函數(shù)中,都會(huì)在第一句隱式地加入一句super(),如果父類中沒(méi)有這樣的構(gòu)造函數(shù),則會(huì)報(bào)錯(cuò);
          15、多態(tài):
          java中根據(jù)傳遞參數(shù)所引用的對(duì)象的不同,來(lái)調(diào)用相應(yīng)子類的方法;
          ·編譯時(shí)多態(tài):方法的重載;
          ·運(yùn)行時(shí)多態(tài):根據(jù)傳遞對(duì)象的不同,來(lái)調(diào)用不同的方法;
          16instanceof
          用于判斷一個(gè)對(duì)象是否為一個(gè)類的實(shí)例;




          1、使用package關(guān)鍵字定義包,包層次對(duì)應(yīng)目錄的層次;
          2、使用 javac –d 目錄 *.java 編譯,生成包
          ? 使用 java 包名.類名來(lái)執(zhí)行文件;
          3、使用import 來(lái)導(dǎo)入一個(gè)包;


          類的修飾符

          1、·public公共類 ? ? ? ? ?
          ·default:包內(nèi)可見(jiàn)
          2final被聲明為final的類,是最終類,不允許被繼承;
          ? ·java.lang.String類是個(gè)final類;
          3abstract:包含抽象方法的類;
          ? ? ? 不允許產(chǎn)生抽象類的對(duì)象;
          ? ? ? 可以將不包含任何抽象方法的類,聲明為abstract,以避免產(chǎn)生這個(gè)類的任何對(duì)象;
          4、方法訪問(wèn)說(shuō)明符
          ? public ? 公共的
          protected 同一包中或不同包中的子類可以訪問(wèn)
          default ? 同一包內(nèi)可以訪問(wèn)
          private ? 同一個(gè)類內(nèi)可以訪問(wèn)
          5、其他方法說(shuō)明符
          · static
          · final ?
          將方法定義為final,則在繼承過(guò)程中,子類將不能重寫該方法;
          privatestatic方法,自然都是final的;
          · abstract 不包含方法體的方法;
          · nativeJNIJava Native Interface
          ? ? ? ·JNI允許JVM中運(yùn)行的java程序與其他語(yǔ)言編寫的應(yīng)用程序進(jìn)行互操作;
          ? ? ? ·JNI可以理解為java程序和本地應(yīng)用程序的之間的中介;
          ? ? ? ·JNI程序編寫步驟:
          1、寫一段java代碼;
          ? ? ? ? 2、編譯java代碼
          ? ? ? ? 3、創(chuàng)建 .h文件(使用javah –jni 類名)
          ? ? ? ? 4、寫一個(gè)本地方法的實(shí)現(xiàn)
          ? ? ? ? 5、創(chuàng)建一個(gè)共享的庫(kù)
          ? ? ? ? 6、執(zhí)行java程序;
          垃圾回收

          1、沒(méi)有任何引用的對(duì)象,成為垃圾內(nèi)存,會(huì)被垃圾回收器回收;
          2、垃圾回收器是自動(dòng)運(yùn)行的,當(dāng)JVM感覺(jué)到內(nèi)存不夠的時(shí),就會(huì)自動(dòng)運(yùn)行來(lái)處理垃圾內(nèi)存;
          3、垃圾回收器在真正回收一個(gè)對(duì)象之前,會(huì)調(diào)用finalize()方法,子類重寫這個(gè)方法,來(lái)做一些配置系統(tǒng)資源或執(zhí)行其他清除的工作;
          4API

          Java.lang.Object. finalize(); //垃圾回收前調(diào)用該方法
          Java.lang.System.gc()   ? //運(yùn)行垃圾回收器


          接口

          1、接口中全部方法默認(rèn)為public abstract,那么在實(shí)現(xiàn)接口的類中,也必須為public的;
          2、實(shí)現(xiàn)一個(gè)接口,若想去創(chuàng)建一個(gè)實(shí)現(xiàn)類的對(duì)象,那么就必須去實(shí)現(xiàn)接口中的所有方法;
          ? 否則,實(shí)現(xiàn)類必須聲明為abstract
          3、接口中允許有數(shù)據(jù)成員,這些成員默認(rèn)為 Public static final
          4java中允許一個(gè)接口繼承另一個(gè)接口;
          5java 中不允許類的多繼承,但允許接口的多繼承;
          6、先繼承類,然后再實(shí)現(xiàn)接口;


          內(nèi)部類

          1、在一個(gè)類中,定義一個(gè)類,這個(gè)類就叫做內(nèi)部類;
          2、當(dāng)我們建立一個(gè)內(nèi)部類時(shí),內(nèi)部類的對(duì)象就會(huì)與外部類的對(duì)象之間產(chǎn)生某種聯(lián)系,這種聯(lián)系是通過(guò)this 引用形成的,從而使的內(nèi)部類可以隨意訪問(wèn)外部類的成員(包括private的)
          3、在內(nèi)部類的方法中,通過(guò)this.x 引用內(nèi)部類的成員變量;通過(guò)outer.this.x引用外部類的成員變量;
          4、使用外部類名.內(nèi)部類名(outer.inner)的方式,在outer類外部引用內(nèi)部類;
          5、在未產(chǎn)生一個(gè)外部類對(duì)象時(shí),不能使用new來(lái)直接創(chuàng)建一個(gè)內(nèi)部類對(duì)象,因?yàn)閮?nèi)部類對(duì)象都是和一個(gè)外部類對(duì)象想關(guān)聯(lián)的,使用 Inner in=outer.new Inner()可以創(chuàng)建(outer為已創(chuàng)建的外部類對(duì)象);
          6、內(nèi)部類可以放到方法、條件語(yǔ)句體、語(yǔ)句塊中,但不管嵌套的層次有多深,內(nèi)部類都可以隨意訪問(wèn)外部類的成員;
          7、當(dāng)內(nèi)部類在一個(gè)方法內(nèi)部定義的時(shí)候,那么方法的參數(shù)或局部變量,必須聲明為final,才可以被內(nèi)部類調(diào)用;
          8、內(nèi)部類可以被聲明為protected private的;
          9、內(nèi)部類可以被聲明為static的類,這時(shí),創(chuàng)建內(nèi)部類對(duì)象就不需要必須首先產(chǎn)生一個(gè)外部類對(duì)象做為前提了,而這樣,內(nèi)部類也不能隨意訪問(wèn)外部類的非static的成員了;
          ? static切斷了外部類與內(nèi)部類之間的關(guān)系)
          10、非static的內(nèi)部類中,不能有靜態(tài)的方法或變量存在;
          11、內(nèi)部類可以實(shí)現(xiàn)接口;
          12、將內(nèi)部類聲明為private的,可以很好的隱藏實(shí)現(xiàn)的細(xì)節(jié);
          13、匿名內(nèi)部類可以用于實(shí)現(xiàn)適配器類,在AWT編程中,經(jīng)常使用到;


          異常處理

          1Exception類:定義了程序中遇到的輕微錯(cuò)誤條件,需要我們?cè)诔绦蛑羞M(jìn)行處理;
          2Error類:定義了程序中遇到的嚴(yán)重錯(cuò)誤條件,內(nèi)存溢出,文件格式錯(cuò)誤等,不需要我們?nèi)ヌ幚恚?/font>java 運(yùn)行時(shí)系統(tǒng)來(lái)進(jìn)行處理;
          3Java程序如果在運(yùn)行的過(guò)程,發(fā)生了異常,就會(huì)自動(dòng)生成一個(gè)異常對(duì)象,并將該異常對(duì)
          ? 象提交給java運(yùn)行時(shí)系統(tǒng)(拋出異常throws),接受到異常對(duì)象,java運(yùn)行時(shí)系統(tǒng)就會(huì)查找能夠處理該異常的代碼,并將該異常對(duì)象交給它進(jìn)行處理(捕獲異常catch)。如果找不到能夠處理該異常的代碼,java程序就會(huì)終止運(yùn)行;
          4try/catch/finally 來(lái)處理異常;
          5、在try中,發(fā)生異常的語(yǔ)句后的程序段,不會(huì)被執(zhí)行,而是直接跳轉(zhuǎn)到catch語(yǔ)句里去;
          執(zhí)行完catch里的語(yǔ)句,會(huì)繼續(xù)執(zhí)行后面的語(yǔ)句;finally里的語(yǔ)句始終都要執(zhí)行;
          6API
          ? Java.lang.Throwable. getMessage()
          ? Java.lang.Throwable. toString()
          Java.lang.Throwable. printStackTrace() ? //以上都是捕獲異常的信息
          6、在方法的參數(shù)列表后,跟上 throws Exception 用來(lái)聲明,該方法有可能會(huì)拋出異常。一旦,產(chǎn)生了異常,則異常會(huì)被拋給該方法的調(diào)用者。如果方法的調(diào)用者不做處理,依舊可以逐級(jí)向上拋,直到main函數(shù)也不做處理,將該異常拋給 java runtime system來(lái)處理;
          7、throw 實(shí)際拋出一個(gè)異常
          throws 聲明拋出一個(gè)異常
          8、RunTime 異常一般不需要我們?nèi)ヌ幚恚蛇\(yùn)行時(shí)系統(tǒng)自己處理;
          9、子類在覆蓋父類方法的時(shí)候,不能拋出新的異常,而只能是相同的異常或該異常的子集;


          String



          1String 類是final類,不允許被繼承;
          2= = 是比較變量的值(引用對(duì)象的地址)是否相等
          ? equals()是比較變量的內(nèi)容(引用的對(duì)象內(nèi)容)是否相等;
          3+ 用于連接字符串;
          4+ +=java中唯一被重載的操作符;
          5String 變量是個(gè)常量,一旦被創(chuàng)建,就不能被改變;
          6、在處理大量字符串的程序中,常用 StringBuffer 來(lái)代替String
          7API
          ? Java.lang.StringBuffer.append() //
          8StringBuffer 創(chuàng)建的對(duì)象空間初始為16個(gè)字符,但當(dāng)空間不夠的時(shí)候,會(huì)自動(dòng)增加;
          9java中的傳遞參數(shù),都是以傳值的方式,基本類型是傳遞值的拷貝,引用類型是傳遞的引用的拷貝;
          10、當(dāng)打印一個(gè)對(duì)象的時(shí)候,會(huì)調(diào)用該對(duì)象的toString方法;


          克隆機(jī)制
          ·為了獲得對(duì)象的一份拷貝,我們可以使用Object類中的clone()方法,在派生類中重寫clone()方法,并聲名為public
          ·必須在繼承類中實(shí)現(xiàn)cloneable接口(標(biāo)識(shí)接口),來(lái)告訴編譯器:該對(duì)象可以克隆了;
          ·在繼承類的clone()中調(diào)用 superClone();
          ·淺拷貝:當(dāng)在類中沒(méi)有引用對(duì)象存在時(shí),類中所有的變量都可以拷貝過(guò)去;
          深拷貝:當(dāng)類中有存在引用對(duì)象時(shí),將該引用對(duì)象一同克隆一份的克隆方法;(將引用對(duì)象所對(duì)應(yīng)的類也重寫clone方法,并且實(shí)現(xiàn)cloneable接口,并且在引用類的clone方法中,將clone方法返回值賦值給引用的變量中);
          數(shù)組操作:

          1API
          java.lang.system.arraycopy //數(shù)組的拷貝
          ? java.util.Arrays.sort ? ? // 對(duì)數(shù)組進(jìn)行排序
          ? java.util.Arrays.binarySearch // 對(duì)有序數(shù)組進(jìn)行搜索
          2、排序?qū)ο髷?shù)組,數(shù)組中的所有對(duì)象都必須實(shí)現(xiàn)Comparable接口;


          封裝類:



          1、針對(duì)八種基本類型,java中存在八個(gè)封裝類;
          2、數(shù)字字符串轉(zhuǎn)換為Integer類型: valueOf(String s);
          ? 數(shù)字字符串轉(zhuǎn)換為int 類型: ? parseInt(String s);


          反射API

          1java.lang.reflect


          單例模式:

          1、每一個(gè)類都只有一個(gè)實(shí)例;
          2、單例模式的構(gòu)造方法是private
          3、主要用于:需要一個(gè)類只提供一個(gè)實(shí)例的時(shí)候,例如計(jì)數(shù)器;
          4、單例類的一個(gè)實(shí)現(xiàn):
          ? class Singleton
          {
          ? private static Singleton st=new Singleton();
          ? private Singleton()
          ? {
          }
          public static Singleton getInstance()
          {
          return st;
          }
          }
          5、參考書java與模式》閻宏電子工業(yè)出版社





          多線程:

          1、程序:程序是一系列計(jì)算機(jī)指令的集合,以文件的形式存儲(chǔ)在計(jì)算機(jī)磁盤上;
          ? 進(jìn)程:進(jìn)程是一個(gè)程序在其自身地址空間內(nèi)的一次執(zhí)行活動(dòng),它可以申請(qǐng)系統(tǒng)資源,被調(diào)度、運(yùn)行;
          ? 線稱:線程是一個(gè)進(jìn)程中的一個(gè)單一連續(xù)控制流程,一個(gè)進(jìn)程可以擁有多個(gè)線程,沒(méi)有獨(dú)立的內(nèi)存空間,而是與其他線稱共享同一進(jìn)程的地址空間;
          2、進(jìn)程與進(jìn)程切換上下文切換耗時(shí),遠(yuǎn)遠(yuǎn)低于線程間切換的效率;
          3java在語(yǔ)言級(jí)支持多線程;
          4、實(shí)現(xiàn)多線程的方法:
          ? 一、繼承Thread 類;
          ? 二、實(shí)現(xiàn)Runnable接口;
          5、實(shí)現(xiàn)run()方法,并用start()啟動(dòng)一個(gè)線程;
          6setDaemonboolean )設(shè)置一個(gè)線程為后臺(tái)線程,當(dāng)程序的線程都為后抬線程時(shí),程序就會(huì)退出;
          7yield()方法可以使一個(gè)線程放棄自己的時(shí)間片,而讓出執(zhí)行機(jī)會(huì)給其他線程;
          8setPriority設(shè)置一個(gè)線程的優(yōu)先級(jí);
          9java的線程調(diào)度機(jī)制,不支持時(shí)間片輪換,而是支持搶占式的方式,對(duì)于具有相同級(jí)別的線程,如果操作系統(tǒng)支持時(shí)間片輪換,則java虛擬機(jī)也支持這種方式;
          10sleep():在指定的毫秒數(shù)內(nèi)讓當(dāng)前正在執(zhí)行的線程休眠(暫停執(zhí)行)。該線程不丟失任何監(jiān)視器的所屬權(quán)。
          11、線程同步:同步塊和同步方法;
          ? ·synchronizedobj)塊,一個(gè)線程進(jìn)入synchronized塊前,先給obj對(duì)象監(jiān)視器加鎖,其他線程則不能進(jìn)入,等離開(kāi)時(shí),則對(duì)監(jiān)視器解鎖;
          ? ·synchronized方法,使用synchronized聲明一個(gè)方法,這種方法的鎖是加到this對(duì)象上邊;
          12、線程的死鎖:
          13wait():導(dǎo)致當(dāng)前的線程等待,直到其他線程調(diào)用此對(duì)象的 notify() 方法或 notifyAll() 方法
          notify():?jiǎn)拘言诖藢?duì)象監(jiān)視器上等待的單個(gè)線程。如果所有線程都在此對(duì)象上等待,則會(huì)選擇喚醒其中一個(gè)線程。選擇是任意性的,并在對(duì)實(shí)現(xiàn)做出決定時(shí)發(fā)生。線程通過(guò)調(diào)用其中一個(gè)wait方法,在對(duì)象的監(jiān)視器上等待。
          14、終止線程:
          ·設(shè)置一個(gè)flag變量;
          ·Intrrupte() 中斷有一個(gè)線程;


          集合類:

          1、集合框架(Collections Framework):就是一個(gè)用來(lái)表示和操作集合的統(tǒng)一的架構(gòu),包含了實(shí)現(xiàn)集合的類和接口;
          2、集合框架中的接口:
          ? CollectionàSetàsortedSet ? ? ? ? ? MapàsortedMap
          ? ? ? ? à List
          ·collection:集合層次中的根接口,JDK中沒(méi)有提供這個(gè)接口的直接實(shí)現(xiàn)類;
          ·set:不能包含重復(fù)的元素。Sortedset是元素按照升序排列的set
          ·list:是一個(gè)有序的集合(不是指的排列順序),可以包含重復(fù)的元素,提供按索引訪問(wèn)的方法;
          ·map:包含了key-value對(duì)。不能包含重復(fù)的元素。Sortedmap是一個(gè)將key值按升序排列的map
          3ArrayList
          ·arraylist可以看成是一個(gè)可以增長(zhǎng)容量的數(shù)組;
          ·arraylist的實(shí)現(xiàn)是使用了一個(gè)對(duì)象數(shù)組,當(dāng)容量不夠的時(shí)候,會(huì)重新分配一個(gè)數(shù)組,將原來(lái)數(shù)組中的元素拷貝到新數(shù)組中;
          ·數(shù)組à List (Arrays.asList())
          Listà數(shù)組 ? (arrayList.toArray())
          ·迭代器(Itertator):
          ·對(duì)于沒(méi)有提供get方法的集合類,可以使用iterator來(lái)返回集合中的元素;
          ·可以提供一個(gè)通用的方法來(lái)返回元素,如
          Pubilc static vid printElems(Collection c)
          {
          ? ? Iterator i=c.iterator();
          ? ? While(i.hasNext())
          ? ? {
          ? ? ? System.out.println(i.next());
          }
          }
          4collections
          ·collections類中所有的方法都是static
          ·自然排序
          ·使用比較器排序
          5LinkedList
          ? ·使用雙向循環(huán)鏈表實(shí)現(xiàn)的;
          ? ·可以實(shí)現(xiàn)棧、隊(duì)列、雙向隊(duì)列;
          ·ArrayListLinkedList的比較:

          ? ·arrayList的低層是采用數(shù)組來(lái)實(shí)現(xiàn)的,而linkedlist是采用雙向鏈表實(shí)現(xiàn)的,linkedlist的每一個(gè)對(duì)象中,都包含了除了自身數(shù)據(jù)元素外的,兩個(gè)值,一個(gè)指向前一個(gè)元素,一個(gè)指向后一個(gè)元素;
          ? ·如果經(jīng)常要在list中的第一個(gè)位置插入數(shù)據(jù)或頻繁插入或刪除操作,則使用LinkedList
          ? 如果要經(jīng)常地查找某一個(gè)元素,則使用ArrayList,它提供了按索引查找;
          6HashSet
          ? ·實(shí)現(xiàn)set接口的hash table,依靠hash map來(lái)實(shí)現(xiàn)的;
          ? ·hashset的默認(rèn)負(fù)載因子是0.75
          ? ·每一個(gè)對(duì)象都有個(gè)hashCode,根據(jù)內(nèi)存地址計(jì)算出來(lái)的;
          ·hashset中存儲(chǔ)元素,則元素的類必須實(shí)現(xiàn)hashCode()和equals()
          7ThreeSet
          ·ThreeSet是依靠threeMap來(lái)實(shí)現(xiàn)的;
          ·ThreeSet中的元素是有序的,缺省按照升序排列,因此threeset中的元素必須實(shí)現(xiàn)Comparable接口;
          ·HashSet TreeSet的比較:

          HashSet是基于hash算法來(lái)實(shí)現(xiàn)的,通常其性能都是優(yōu)于TreeSet,通常都是使用hashset的;只有使用到排序功能的時(shí)候,才會(huì)使用TreeSet
          8HashMap
          9TreeMap
          ·按照key排序
          ·HashMapTreeMap的比較:

          ? set的一樣;




          I/O操作

          1、一個(gè)java中的File類,即可以表示一個(gè)文件,也可以表示一個(gè)目錄;
          2、在程序運(yùn)行過(guò)程中,產(chǎn)生的運(yùn)行時(shí)臨時(shí)程序,可以通過(guò)deleteOnEixt(),在程序結(jié)束的時(shí)候清除這些中間文件;
          3java中的讀取和寫入都是通過(guò)流來(lái)完成的;
          4、流:字節(jié)的源或目的;
          5、流分類:節(jié)點(diǎn)流和過(guò)濾流(需要一個(gè)存在的節(jié)點(diǎn)流對(duì)象)
          6InputStream
          ? Abstract int read()
          ? Int read(byte[])
          ? Int read(byte[],int off,int length)
          ? Void close()
          7outputStream:
          ? Abstract void write(int b)
          ? Void write(byte[] b)
          ? Void write(byte[] b,int off, int length)
          ? Void flush()
          ? Void close()
          8、基本流:
          ? ·FileInputStream FileOutputStream ? (節(jié)點(diǎn)流)
          ·BufferedInputStream BufferedOutputStream (過(guò)濾流)
          9、當(dāng)使用bufferedoutputstream()的時(shí)候,只有當(dāng)緩沖區(qū)滿的時(shí)候,才會(huì)輸出,可以使用flush()或關(guān)閉 close()方法強(qiáng)制輸出;
          10DataInputStream DataOutputStream (過(guò)濾流)
          ? ? 提供對(duì)基本數(shù)據(jù)類型的讀寫操作;
          11PipedInputStream PipedOutputStream (管道流)
          ? ? 用于線程之間的通信;
          12java的輸入\輸出,提供的是一種鏈結(jié)機(jī)制,可以把兩個(gè)流首尾相結(jié),形成一個(gè)流管道。這種模式被稱為裝飾模型(Decorater)。
          13Reader Writer 是用來(lái)讀寫字符流;
          ? InputStream OutputStream 是用來(lái)讀寫字節(jié)流;

          posted on 2008-12-08 16:41 幽夢(mèng)新影 閱讀(1805) 評(píng)論(4)  編輯  收藏

          評(píng)論

          # re: 一些JAVA學(xué)習(xí)筆記   回復(fù)  更多評(píng)論   

          是不是沒(méi)啥東西寫了?籠統(tǒng)的一些概念。
          2008-12-08 17:33 | T

          # re: 一些JAVA學(xué)習(xí)筆記   回復(fù)  更多評(píng)論   

          亂得沒(méi)法看。
          2008-12-08 20:29 | ww

          # re: 一些JAVA學(xué)習(xí)筆記   回復(fù)  更多評(píng)論   

          雖然有點(diǎn)雜,不過(guò)對(duì)付java考試還是很有用
          2008-12-10 14:23 | ...

          # re: 一些JAVA學(xué)習(xí)筆記   回復(fù)  更多評(píng)論   

          嗯,雖然有點(diǎn)亂,但是很多東西對(duì)我都有用,支持樓主!
          2008-12-11 11:46 | 小人物

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 山东省| 宁陵县| 明溪县| 武川县| 金溪县| 临澧县| 德江县| 霍城县| 卢龙县| 托里县| 上饶县| 沾化县| 东乡| 沁阳市| 广宗县| 米脂县| 肇东市| 宝兴县| 遵化市| 龙州县| 密山市| 施甸县| 吴桥县| 鱼台县| 巩留县| 汾阳市| 诏安县| 惠来县| 梅州市| 平武县| 阳西县| 沁阳市| 鄂州市| 白河县| 钟山县| 旌德县| 磴口县| 车险| 栖霞市| 肥东县| 玉田县|