Java知識點(diǎn)總結(jié)_第1頁
Java知識點(diǎn)總結(jié)_第2頁
Java知識點(diǎn)總結(jié)_第3頁
Java知識點(diǎn)總結(jié)_第4頁
Java知識點(diǎn)總結(jié)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Java總結(jié)1. 命名規(guī)則a) 必須使用字母,數(shù)字,_, $組成b) 不能以數(shù)字開頭c) 不能使用關(guān)鍵字或保留字1.1 類名:所有單詞首字母大寫,其余小寫(HelloWorld)1.2 變量:從第二個(gè)單詞開始首字母大寫,其余小寫,使用名詞(carColor)1.3 方法:從第二個(gè)單詞開始首字母大寫,其余小寫,使用動(dòng)詞(qiChuang)1.4 包名:所有字母小寫1.5 常量:所有字母大寫,單詞之間用_隔開2.基本數(shù)據(jù)類型2.1 數(shù)值型2.1.1 整型字節(jié)型Byte -128127 占1個(gè)字節(jié)短整型short-32768 32767占2個(gè)字節(jié) 整型 int -2147483648 2147483

2、647 占4個(gè)字節(jié)長整型long-9223372036854775808 9223372036854775807占8個(gè)字節(jié)聲明時(shí)可以帶L/l2.2 浮點(diǎn)型2.2.1 float浮點(diǎn)型占4個(gè)字節(jié) 賦值時(shí)必須帶F/f后綴 2.2.2double 雙精度浮點(diǎn)型 占8個(gè)字節(jié) 可以帶D/d后綴2.3 布爾型 boolean (true|false)2.4 字符型 char 占2個(gè)字節(jié) 取值范圍 'u0000' 'uffff'char必須被單引號表示,并且必須只能表示一個(gè)字符。java中的字符型采用Unicode字符集2.5引用數(shù)據(jù)類型 類,接口,數(shù)組2.6 類型轉(zhuǎn)換自動(dòng)類

3、型轉(zhuǎn)換/隱式轉(zhuǎn)換: 小類型到大類型屬于自動(dòng)類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換/顯示轉(zhuǎn)換: 大類型到小類型屬于強(qiáng)制類型轉(zhuǎn)換byte 或short的運(yùn)算結(jié)果必須是intchar 和數(shù)值型可以互轉(zhuǎn)3. 數(shù)組表示一組相同類型的數(shù)據(jù)集合。長度是固定的,類型固定。在內(nèi)存中占用一塊連續(xù)的空間。int intArray = new int10;int intArray = new int10,20,30,40,50,60;int intArray1 = 10,20,30,40,50,60;int intArray2;intArray2 = new int10,20,30,40,50,60;通過length屬性來獲取長度,通

4、過下標(biāo)訪問元素(intArray1),如果超出范圍則拋出異常:java.lang.ArrayIndexOutOfBoundsException4. 面向?qū)ο蟮奶匦?.1 封裝將屬性或方法通過private關(guān)鍵字修飾為私有的,只能由自己訪問,提供一個(gè)或多個(gè)公開的方法給外部訪問,可以在方法中添加自己的邏輯判斷。隱藏類的實(shí)現(xiàn)細(xì)節(jié),達(dá)到部分的代碼安全,實(shí)現(xiàn)數(shù)據(jù)的安全準(zhǔn)確性。4.2 繼承從父類中獲得其屬性和方法的一種機(jī)制,減少重復(fù)代碼。通過extends關(guān)鍵字來實(shí)現(xiàn)。* java只支持單繼承。一個(gè)類只能有一個(gè)父類。但是一個(gè)父類可以有多個(gè)子類。* 在java中所有類都是直接或者間接的繼承于java.lan

5、g.Object4.2.1 方法重寫(Override): 在子類中聲明一個(gè)跟父類中一樣的方法覆蓋從父類繼承的該方法,達(dá)到擴(kuò)展的目的。 1. 方法名,參數(shù)列表,返回值類型必須跟父類中的一致 2. 訪問權(quán)限不能比父類中的更嚴(yán)格 3. 不能拋出比父類中更大的異常4.2.2 方法重載(Overload):在同一個(gè)類中實(shí)現(xiàn)多個(gè)相同名稱的方法。達(dá)到在不一樣的前提條件下實(shí)現(xiàn)相同的功能。1. 方法名必須相同2. 參數(shù)列表必須不一樣(個(gè)數(shù),類型,順序)* 跟返回值類型無關(guān)4.3 多態(tài)當(dāng)父類引用指向子類對象時(shí)就是多態(tài)。Person p = new ChinesePerson();* 如果子類中重寫了方法,執(zhí)行時(shí)

6、會(huì)執(zhí)行子類中的方法 如果子類中額外聲明了方法,將不能被執(zhí)行 對象造型(Casting)將父類類型對象轉(zhuǎn)成子類類型對象(如果對象是用父類類型new出來的則會(huì)報(bào)錯(cuò))ChinesePerson cp = (ChinesePerson) p;對象造型之前可以通過instanceof關(guān)鍵字判斷對象是否是將要造型的類型。if(p instanceof ChinesePerson) ChinesePerson cp = (ChinesePerson) p;cp.sing();5.java的內(nèi)存分配5.1 棧效率高,空間小通常用于保存局部空間的變量和引用5.2 堆效率低,空間大通常用于保存new出來的對象(也

7、包含數(shù)組對象)6. 構(gòu)造方法用于創(chuàng)建對象時(shí)對對象進(jìn)行初始化的方法,跟類名一致,沒有返回值位。new對象時(shí)會(huì)被執(zhí)行。* 每個(gè)類都必須擁有至少一個(gè)構(gòu)造法* 如果沒有顯示定義構(gòu)造方法,虛擬機(jī)會(huì)自動(dòng)給該類提供一個(gè)無參的默認(rèn)構(gòu)造方法* 一旦顯示定義構(gòu)造方法,虛擬機(jī)將不會(huì)提供默認(rèn)構(gòu)造方法* 構(gòu)造方法可以重載* 構(gòu)造方法不能被繼承,所以也不能被重寫7. this和super7.1 表示對象this表示當(dāng)前類的當(dāng)前對象super表示父類對象7.2 用于調(diào)用其他構(gòu)造方法this用于調(diào)用當(dāng)前類的其他構(gòu)造方法*必須在第一行super用于調(diào)用父類構(gòu)造方法*必須在第一行* 子類中的構(gòu)造方法必須直接或間接調(diào)用父類的構(gòu)造方

8、法 如果沒有顯示調(diào)用則會(huì)執(zhí)行super(); 8. 變量初始化(成員變量,初始化數(shù)組時(shí))byte 0short 0int 0long 0Lfloat 0.0Fdouble 0.0Dboolean falsechar 'u0000'引用數(shù)據(jù)類型 null9. 對象創(chuàng)建過程9.1 在棧中為引用創(chuàng)建空間9.2 當(dāng)執(zhí)行new的時(shí)候在堆中開辟空間并創(chuàng)建對象9.3 對對象進(jìn)行屬性初始化9.4 執(zhí)行構(gòu)造方法進(jìn)行再次初始化9.5 將堆中對象的首地址賦值給棧中的引用空間10. 包java中用于解決命名沖突,以及管理眾多類的機(jī)制。10.1 在類的第一行有效代碼處編寫package xxx.xxx.

9、xx;10.2 引入其他包中的類import xxx.xxx.xx.Xxx;10.3引入整個(gè)包下的所有類import xxx.xxx.xx.*;10.4編譯和執(zhí)行包下的類(命令位置必須是在項(xiàng)目起始目錄)e:/xxx -> javac ./com/direct/MainClass.javae:/xxx -> java com.direct.MainClass11. 抽象類不能被實(shí)例化的類(不能被創(chuàng)建對象),用abstract關(guān)鍵字來修飾。* 抽象方法:沒有方法體的虛方法。用abstract修飾。* 包含抽象方法的類必須是抽象類。* 抽象類也可以不包含抽象方法。* 抽象類也可以包含非抽

10、象方法。* 子類必須重寫實(shí)現(xiàn)父類中的抽象方法。不然也必須定義為抽象類。12. 接口完全抽象體,只能包含抽象方法和常量。用interface關(guān)鍵字來修飾。* 接口中的方法必須是public abstract的* 接口可以繼承接口,可以多繼承* 類可以實(shí)現(xiàn)多個(gè)接口(用implements來實(shí)現(xiàn))* 接口沒有構(gòu)造方法13. final修飾類: 最終類,不能被繼承。修飾方法:最終方法,不能被重寫修飾變量:最終變量,常量,一旦賦值不能被改變14. static方法:靜態(tài)方法,屬于類的方法,使用類名.方法名()來訪問屬性:靜態(tài)屬性,屬于類的變量,使用類名.變量名來訪問。每一個(gè)類只有一份該對象。(跟對象無關(guān)

11、)在靜態(tài)方法中不能訪問非靜態(tài)方法和屬性以及使用this和super關(guān)鍵字。代碼塊:靜態(tài)代碼塊 static . 當(dāng)類被加載時(shí)會(huì)被執(zhí)行。因?yàn)槊總€(gè)類只會(huì)加載一次,所以該代碼庫只會(huì)執(zhí)行一次。15. 單例模式 一個(gè)類只允許被創(chuàng)建一個(gè)對象。 三要素 15.1 私有化構(gòu)造方法 15.2 創(chuàng)建靜態(tài)的私有的本類對象(單例對象) 15.3 提供公開的靜態(tài)方法供外界獲取單例對象16. 訪問權(quán)限 public protected friendly/default/缺省 private當(dāng)前類 同包 ×子類 × ×其他 × × ×16. Object類toSt

12、ring: 用于將當(dāng)前對象轉(zhuǎn)成String *默認(rèn)Object中的實(shí)現(xiàn)為return getClass().getName() + "" + Integer.toHexString(hashCode();getClass:獲取對象所屬類equals: 提供用于比較引用數(shù)據(jù)類型是否相等的方法,必須在類中重寫才有效。hashCode: 唯一區(qū)分每個(gè)對象的hash碼17. 可變字符串因?yàn)镾tring被設(shè)計(jì)為final并且其底層采用常量字符數(shù)組來表示,所以String對象中的內(nèi)容不能更改。當(dāng)需要做大量字符串連接時(shí)java會(huì)創(chuàng)建大量無用對象占用內(nèi)存。可以使用StringBuffer或

13、StringBuilder這樣的可變字符串來實(shí)現(xiàn)字符串的連接。StringBuilder buffer = new StringBuilder("zhangsan");buffer.append(",lisi");buffer.append(",wangwu");buffer.append(",zhaoliu");String str1 = buffer.toString();StringBuffer和StringBuilderStringBuffer jdk1.0時(shí)產(chǎn)生的,重量級,線程安全的,效率低StringB

14、uilder jdk1.5時(shí)產(chǎn)生,輕量級,非線程安全的,效率高18 GC(Garbage Collection)垃圾回收機(jī)制垃圾回收機(jī)制是java虛擬機(jī)提供的自動(dòng)釋放無用對象的內(nèi)存空間的機(jī)制。當(dāng)對象不再被引用時(shí),就視為垃圾對象,就有可能會(huì)被回收。自動(dòng)運(yùn)行,在程序中無法干預(yù)??梢越ㄗh,但不一定被采納。/ 建議虛擬機(jī)進(jìn)行垃圾回收,但虛擬機(jī)不一定采納System.gc();/* * 當(dāng)垃圾回收器將要回收該對象時(shí)被調(diào)用 * 該方法只會(huì)被調(diào)用一次 * * 由Object類定義的方法,java虛擬機(jī)自動(dòng)調(diào)用,程序中只需要重寫即可 */protected void finalize() throws Thr

15、owable System.out.println("被回收時(shí)執(zhí)行");19. 日期時(shí)間處理19.1 Date表示時(shí)間類型/ 創(chuàng)建指定時(shí)間對象Date d = new Date(1000);/ 創(chuàng)建當(dāng)前時(shí)間對象(等同于new Date(System.currentTimeMillis()Date d = new Date();/ 獲取時(shí)間對象表示的毫秒數(shù)long ms = d.getTime()19.2 Calendar日歷處理/ 獲取日歷對象,默認(rèn)日歷翻到當(dāng)前時(shí)間Calendar c = Calendar.getInstance();c.setTime(new Date(

16、1000); / 翻到1970年1月1日 0時(shí)0分1秒處 也可以寫為: c.setTimeInMillis(1000);/常量Calendar.YEARCalendar.MONTH / 0 - 11Calendar.DATECalendar.HOUR_OF_DAYCalendar.MINUTECalendar.SECONDCalendar.MILLISECONDCalendar.DAY_OF_WEEK / 1-7 SUNDAY - SATURDAYCalendar.WEEK_OF_MONTHCalendar.WEEK_OF_YEAR/ get 方法 獲取對應(yīng)字段的值int year = c.g

17、et(Calendar.YEAR); / 獲取年int month = c.get(Calendar.MONTH); / 獲取月 0 - 11/ set 方法 設(shè)置字段值c.set(Calendar.MONTH, 11);/ add 方法 在當(dāng)前時(shí)間上的特定字段上翻動(dòng)c.add(Calendar.DATE, -3);/ roll方法 在當(dāng)前時(shí)間上的特定字段上翻動(dòng) 不影響其他字段c.roll(Calendar.DATE, -1);/ 翻到本月的最后一天c.set(Calendar.DATE, 1);c.roll(Calendar.DATE, -1);19.3 SimpleDateFormat日期

18、和字符串互轉(zhuǎn)工具類/ 創(chuàng)建格式化對象SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");或SimpleDateFormat sdf1 = new SimpleDateFormat();sdf.applyPattern("yyyy年MM月dd日 HH時(shí)mm分ss秒 E");/ 將時(shí)間對象轉(zhuǎn)成制定格式字符串String str = sdf.format(new Date();/ 將制定格式字符串轉(zhuǎn)成時(shí)間對象Date d = sdf.parse(ds);20. 異常程序運(yùn)行中出現(xiàn)

19、的錯(cuò)誤。會(huì)打斷程序正常執(zhí)行。是java中提供的一種錯(cuò)誤提示和處理的機(jī)制。20.1 異常分類錯(cuò)誤(ERROR):通常指不是由程序造成并且在程序中不能處理或避免的錯(cuò)誤。比如:內(nèi)存溢出,Java虛擬機(jī)出錯(cuò)等異常(Exception):通常指由于程序代碼不嚴(yán)謹(jǐn)造成的可以避免的錯(cuò)誤或在程序中可以預(yù)先處理的錯(cuò)誤。20.2 拋出異常通過throw關(guān)鍵字拋出異常throw new IndexOutOfBoundsException();通過throws關(guān)鍵字在方法上標(biāo)注有可能會(huì)發(fā)生的異常20.3 異常處理try . / 嘗試執(zhí)行可能會(huì)發(fā)生異常的代碼塊 catch(.) / 捕捉try塊中發(fā)生的異常并處理. c

20、atch(.) . catch(.) . finally / 必須執(zhí)行塊,無論try中是否發(fā)生異常,該塊都會(huì)被執(zhí)行,即使try中有return也會(huì)在return之前被執(zhí)行.* 多重catch時(shí)父類異常必須寫到子類之后。20.4 自定義異常只需繼承Exception或RuntimeException即可實(shí)現(xiàn)自定義異常21. 集合(Collection)/ 容器(Container)集合結(jié)構(gòu)中的根接口,定義集合的基本方法(add,addAll,remove,contains,clear,iterate.等)21.1 List(有序可重復(fù))有序集合,會(huì)記錄存放到容器中的元素的順序,并且可以按索引獲取

21、對應(yīng)的元素。允許重復(fù)元素21.1.1 ArrayList底層采用數(shù)組來實(shí)現(xiàn),按下標(biāo)查找數(shù)據(jù)效率高,需要在內(nèi)存中開辟連續(xù)空間來存儲(chǔ),需要擴(kuò)容和縮容在中間插入和刪除數(shù)據(jù)時(shí)會(huì)導(dǎo)致其后的所有元素移動(dòng),所以中間操作效率低非線程安全的,效率高21.1.2 LinkedList底層采用雙向鏈表來實(shí)現(xiàn),按下標(biāo)查找數(shù)據(jù)效率低,不需要在內(nèi)存中開辟連續(xù)空間來存儲(chǔ),在中間插入和刪除數(shù)據(jù)時(shí)效率高非線程安全的,效率高21.1.3 VectorJDK1.0時(shí)實(shí)現(xiàn)的可變數(shù)組,底層采用數(shù)組來實(shí)現(xiàn),跟ArrayList的特點(diǎn)相似線程安全的,效率低21.1.4 Stack 數(shù)據(jù)結(jié)構(gòu)棧的實(shí)現(xiàn)(FILO)21.2 Set(無序不可重復(fù)

22、)無序集合,不會(huì)記錄存放順序,不能按索引獲取元素,不允許重復(fù)元素。21.2.1 HashSet采用hash表實(shí)現(xiàn)的不可重復(fù)的set,要求被添加的元素類重寫hashCode和equals方法當(dāng)被加入的對象已經(jīng)存在時(shí)就不會(huì)再次添加到set中21.2.2 SortedSet實(shí)現(xiàn)了排序的set,要求被排序?qū)ο蟊仨殞?shí)現(xiàn)Comparable接口或者必須傳入實(shí)現(xiàn)了Comparator接口的比較器來實(shí)現(xiàn)對象的比較21.2.3 TreeSet(排序set的實(shí)現(xiàn)類)22. Map(jdk1.2)鍵值對集合,key不能重復(fù)。22.1 HashMap(jdk1.2)基于hash表實(shí)現(xiàn)的鍵值對集合輕量級,非線程安全的,

23、效率高允許null作為鍵或值22.2 Hashtable(jdk1.0,繼承Dictionary來實(shí)現(xiàn),jdk1.2之后也實(shí)現(xiàn)了Map接口)也是基于hash表實(shí)現(xiàn)的鍵值對集合 重量級,線程安全的,效率低不允許null作為鍵和值22.3 TreeMap基于紅黑樹實(shí)現(xiàn)的排序的mapProperties表示了一個(gè)持久的屬性集(可保存在流中或從流中加載)* 兩個(gè)對象相等一定要有相同的hashCode23. List的三種迭代方/* * 遍歷list方式一: */for(int i=0;i<list.size();i+) Object v = list.get(i);System.out.prin

24、tln(v);/* * 遍歷list方式二: */for(Object o : list) System.out.println(o);/* * 遍歷list方式三: * 迭代器模式,迭代子 */Iterator it = list.iterator();while(it.hasNext() Object o = it.next();System.out.println(o);24. Set的迭代方式:/* * 遍歷list方式二: */for(Object o : set) System.out.println(o);/* * 遍歷list方式三: * 迭代器模式,迭代子 */Iterato

25、r it = set.iterator();while(it.hasNext() Object o = it.next();System.out.println(o);25. Map的迭代方式/ map中的鍵的setSet ks = map.keySet();for(Object key : ks) System.out.println(key + ":" + map.get(key);/ map中的值的集合Collection values = map.values();for(Object v : values) System.out.println(v);/ 獲取ma

26、p中的鍵值對為set集合Set entrys = map.entrySet();for(Object o : entrys) Entry e = (Entry) o;System.out.println(e.getKey() + ":" + e.getValue();26. Collections由jdk提供的用于操作Collection的工具類,其中包含了大量的工具方法(如:sort,reverse,max,min等)27. Arrays由jdk提供的用于操作數(shù)組的工具類,其中包含了大量的工具方法(如:sort,fill,toString,equals, copyOf,b

27、inarySearch等)28. File boolean canExecute() 測試應(yīng)用程序是否可以執(zhí)行此抽象路徑名表示的文件。 boolean canRead() 測試應(yīng)用程序是否可以讀取此抽象路徑名表示的文件。 boolean canWrite() 測試應(yīng)用程序是否可以修改此抽象路徑名表示的文件。 int compareTo(File pathname) 按字母順序比較兩個(gè)抽象路徑名。 boolean createNewFile() 當(dāng)且僅當(dāng)不存在具有此抽象路徑名指定名稱的文件時(shí),不可分地創(chuàng)建一個(gè)新的空文件。 boolean delete() 刪除此抽象路徑名表示的文件或目錄。 bo

28、olean exists() 測試此抽象路徑名表示的文件或目錄是否存在。 String getName() 返回由此抽象路徑名表示的文件或目錄的名稱。 String getParent() 返回此抽象路徑名父目錄的路徑名字符串;如果此路徑名沒有指定父目錄,則返回 null。 File getParentFile() 返回此抽象路徑名父目錄的抽象路徑名;如果此路徑名沒有指定父目錄,則返回 null。 String getPath() 將此抽象路徑名轉(zhuǎn)換為一個(gè)路徑名字符串。 boolean isDirectory() 測試此抽象路徑名表示的文件是否是一個(gè)目錄。 boolean isFile() 測

29、試此抽象路徑名表示的文件是否是一個(gè)標(biāo)準(zhǔn)文件。 boolean isHidden() 測試此抽象路徑名指定的文件是否是一個(gè)隱藏文件。 long lastModified() 返回此抽象路徑名表示的文件最后一次被修改的時(shí)間。 long length() 返回由此抽象路徑名表示的文件的長度。 String list() 返回一個(gè)字符串?dāng)?shù)組,這些字符串指定此抽象路徑名表示的目錄中的文件和目錄。 String list(FilenameFilter filter) 返回一個(gè)字符串?dāng)?shù)組,這些字符串指定此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。 File listFiles() 返回一個(gè)抽象路徑名

30、數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中的文件。 File listFiles(FileFilter filter) 返回抽象路徑名數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。 File listFiles(FilenameFilter filter) 返回抽象路徑名數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。 static File listRoots() 列出可用的文件系統(tǒng)根。 boolean mkdir() 創(chuàng)建此抽象路徑名指定的目錄。 boolean mkdirs() 創(chuàng)建此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。

31、 boolean renameTo(File dest) 重新命名此抽象路徑名表示的文件。 boolean setExecutable(boolean executable) 設(shè)置此抽象路徑名所有者執(zhí)行權(quán)限的一個(gè)便捷方法。 boolean setLastModified(long time) 設(shè)置此抽象路徑名指定的文件或目錄的最后一次修改時(shí)間。 boolean setReadable(boolean readable) 設(shè)置此抽象路徑名所有者讀權(quán)限的一個(gè)便捷方法。 boolean setReadOnly() 標(biāo)記此抽象路徑名指定的文件或目錄,從而只能對其進(jìn)行讀操作。 boolean setWr

32、itable(boolean writable) 設(shè)置此抽象路徑名所有者寫權(quán)限的一個(gè)便捷方法。 29. I/O流 (In/Out Input/Output InputStream/OutputStream)29.1 按方向劃分:輸入流:InputStream,Reader輸出流: OutputStream,Writer29.2 按操作數(shù)據(jù)類型劃分:字節(jié)流: InputStream,OutputStream字符流: Reader, Writer29.4 InputStream字節(jié)輸入流的超類(源流) FileInputStream文件輸入流int read(): 從流中讀取下一個(gè)字節(jié)int re

33、ad(byte buffer): 從流中讀取buffer.length個(gè)字節(jié)到buffer數(shù)組中.返回讀取到的長度,如果沒讀到數(shù)據(jù)則返回-1ByteArrayInputStream針對內(nèi)存中的字節(jié)數(shù)組的輸入流|(裝飾流) ObjectInputStream對象輸入流,從其他源流中讀取由ObjectOutputStream已經(jīng)寫入好的對象Object readObject(): 從流中讀取一個(gè)對象29.5 OutputStream字節(jié)輸出流|(源流) FileOutputStream文件輸出流void write(int data): 將一個(gè)字節(jié)的data數(shù)據(jù)寫到流中void write(byt

34、e buffer, int offset, int length): 將buffer中的數(shù)據(jù)從offset處開始寫入length個(gè)到流中ByteArrayOutputStream 針對內(nèi)存中的字節(jié)數(shù)組的輸出流(通常用于臨時(shí)保存數(shù)據(jù)到內(nèi)存中)(裝飾流)ObjectOutputStream對象輸出流,將對象寫入到其他源流中,供ObjectInputStream讀取void writeObject(): 向流中寫入一個(gè)對象|29.6 WriterFileWriterBufferedWriter29.7 ReaderFileReaderBufferedReader29.8 適配器流(將字節(jié)流轉(zhuǎn)換為字符

35、流)InputStreamReaderOutputStreamWriterBufferedReader br = new BufferedReader(new InputStreamReader(fis);BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos);30. 對象克隆30.1 淺克隆由JDK提供的API實(shí)現(xiàn),只會(huì)克隆當(dāng)前對象,不會(huì)克隆其關(guān)聯(lián)對象。效率高。30.1.1 必須實(shí)現(xiàn)java.lang.Cloneable30.1.2 必須重寫clone方法(*必須在clone方法中調(diào)用super.clone())3

36、0.2 深克隆由對象流將對象序列化到內(nèi)存或文件之后再讀取出來成為新對象,會(huì)克隆整個(gè)對象及所有關(guān)聯(lián)對象。效率低。* 將對象寫入到硬盤或內(nèi)存以及在網(wǎng)絡(luò)上傳輸?shù)冗^程稱之為序列化,被序列化的對象必須實(shí)現(xiàn)了Serializable接口,否則會(huì)拋出java.io.NotSerializableException* 對象被序列化時(shí)不會(huì)講trnsient的屬性序列化.* 使用完流之后必須關(guān)閉.需要將關(guān)閉動(dòng)作在finally中完成(關(guān)閉之前最好判斷被關(guān)閉流是否為空)31. 多線程31.1 什么是進(jìn)程?正在運(yùn)行中的程序。31.2 什么是線程?進(jìn)程中的一個(gè)執(zhí)行單元,一個(gè)進(jìn)程中至少包含一個(gè)線程。線程不能單獨(dú)存在,必須

37、在某個(gè)進(jìn)程中。31.3 什么是多線程?一個(gè)進(jìn)程中有多個(gè)執(zhí)行單元,可以同時(shí)完成不同的操作。32. 實(shí)現(xiàn)多線程32.1 繼承Thread類實(shí)現(xiàn),重寫run方法。32.2 實(shí)現(xiàn)Runnable接口實(shí)現(xiàn)* 啟動(dòng)線程必須是用start33. 停止線程* 不要使用Thread提供的stop方法來實(shí)現(xiàn)停止線程* 通過提供公開的方法來更改執(zhí)行標(biāo)志的方式來讓線程中的代碼完成執(zhí)行,以達(dá)到來停止線程的目的。34. 常用方法long getId(): 獲取線程的id(id是由jvm自動(dòng)分配)void setName(): 設(shè)置線程的名稱String getName(): 獲取線程的名稱void setPriority

38、(): 設(shè)置優(yōu)先級1(MIN_PRIORITY)10(MAX_PRIORITY) 默認(rèn)為5(NORM_PRIORITY)int getPriotiry(): 獲取線程的優(yōu)先級值void join(): 等待指定線程執(zhí)行完成static void currentThread(): 獲取當(dāng)前執(zhí)行的線程對象static void sleep(): 讓當(dāng)前線程休眠(暫停執(zhí)行)指定毫秒數(shù)static void yield(): 讓當(dāng)前正在執(zhí)行的線程變回可運(yùn)行狀態(tài),CPU重新選擇線程執(zhí)行(有可能還會(huì)選擇到該線程)35. 線程同步synchronizedsynchronized塊讓多個(gè)線程使用同一個(gè)鎖資源,

39、必須得到鎖資源的線程才能執(zhí)行,其他線程必須等待該線程執(zhí)行完之后釋放鎖資源之后才能獲取鎖并執(zhí)行synchronized方法在方法上用synchronized修飾,當(dāng)一個(gè)線程在執(zhí)行對象的同步方法時(shí),其他線程將不能執(zhí)行該對象的任意同步方法,但可以執(zhí)行非同步方法*如果是靜態(tài)方法,則所有靜態(tài)方法使用的是同一把鎖,跟普通方法互不影響Lock36. wait notifywait: 讓當(dāng)前正在使用該對象的線程進(jìn)入等待狀態(tài),進(jìn)入等待狀態(tài)之后必須被notify或notifyAll喚醒notify: 隨機(jī)喚醒一個(gè)正在當(dāng)前對象上等待的線程notifyAll: 喚醒所有在當(dāng)前對象上等待的線程37. 網(wǎng)絡(luò)37.1 TCP可靠,安全。需要建立和斷開連接。保證數(shù)據(jù)的準(zhǔn)確和安全性。效率低。傳輸大小無限制??蛻舳耍篠ocket s = n

溫馨提示

  • 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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論