1 接口的意義
規(guī)范(基于接口編程)诵棵、擴展(松耦合)、回調(diào)
2 抽象類的意義
為其子類提供一個公共的類型,封裝子類中得重復(fù)內(nèi)容
定義抽象方法祝旷,子類雖然有不同的實現(xiàn),但是定義是一致的
3 內(nèi)部類的作用
內(nèi)部類可以用多個實例履澳,每個實例都有自己的狀態(tài)信息,并且與其他外圍對象的信息相互獨立怀跛。
4 父類的靜態(tài)方法能否被子類重寫
子類繼承父類后距贷,用相同的靜態(tài)方法和非靜態(tài)方法,這時非靜態(tài)方法覆蓋父類中的方法(即方法重寫)敌完,父類的該靜態(tài)方法被隱藏(如果對象是父類則調(diào)用該隱藏的方法)
5 垃圾回收機制
Java 垃圾回收機制最基本的做法是分代回收储耐。內(nèi)存中的區(qū)域被劃分成不同的世代羊初,對象根據(jù)其存活的時間被保存在對應(yīng)世代的區(qū)域中滨溉。一般的實現(xiàn)是劃分成3個世代:年輕、年老和永久长赞。內(nèi)存的分配是發(fā)生在年輕世代中的晦攒。當(dāng)一個對象存活時間足夠長的時候,它就會被復(fù)制到年老世代中得哆。對于不同的世代可以使用不同的垃圾回收算法脯颜。進(jìn)行世代劃分的出發(fā)點是對應(yīng)用中對象存活時間進(jìn)行研究之后得出的統(tǒng)計規(guī)律。一般來說贩据,一個應(yīng)用中的大部分對象的存活時間都很短栋操。比如局部變量的存活時間就只在方法的執(zhí)行過程中”チ粒基于這一點矾芙,對于年輕世代的垃圾回收算法就可以很有針對性。
6 ==和equals和hashCode
== 判斷值是否相等近上,復(fù)雜類型判斷引用的地址是否相等
Object的equal方法默認(rèn)是兩個對象的引用的比較剔宪,意思就是指向同一內(nèi)存,地址則相等,否則不相等壹无;
hashCode():計算出對象實例的哈希碼葱绒,并返回哈希碼,又稱為散列函數(shù)斗锭。根類Object的hashCode()方法的計算依賴于對象實例的D(內(nèi)存地址)地淀,故每個Object對象的hashCode都是唯一的;
在批量的對象比較中岖是,hashCode要比equals來得快帮毁;
慮在集合中她倘,判斷兩個對象是否相等的規(guī)則是:
第一步,如果hashCode()相等作箍,則查看第二步硬梁,否則不相等;
第二步,查看equals()是否相等胞得,如果相等荧止,則兩obj相等,否則還是不相等阶剑。
改寫equals時總是要改寫hashcode跃巡;
改寫String中的equals為基于內(nèi)容上的比較而不是內(nèi)存地址的話,那么雖然equals相等牧愁,但并不代表內(nèi)存地址相等素邪,由hashcode方法的定義可知內(nèi)存地址不同,沒改寫的hashcode值也可能不同猪半。
7 string-stringbuffer-stringbuilder
String 字符串常量
StringBuffer 字符串變量(線程安全)
StringBuilder 字符串變量(非線程安全)
8 多態(tài)的實現(xiàn)方式
接口實現(xiàn)兔朦,繼承父類進(jìn)行方法重寫,同一個類中進(jìn)行方法重載磨确。
9 線程阻塞
- sleep() 方法:sleep() 允許 指定以毫秒為單位的一段時間作為參數(shù)沽甥,它使得線程在指定的時間內(nèi)進(jìn)入阻塞狀態(tài),不能得到CPU 時間乏奥,指定的時間一過摆舟,線程重新進(jìn)入可執(zhí)行狀態(tài)。 典型地邓了,sleep() 被用在等待某個資源就緒的情形:測試發(fā)現(xiàn)條件不滿足后恨诱,讓線程阻塞一段時間后重新測試,直到條件滿足為止骗炉。
- suspend() 和 resume() 方法:兩個方法配套使用照宝,suspend()使得線程進(jìn)入阻塞狀態(tài),并且不會自動恢復(fù)痕鳍,必須其對應(yīng)的resume() 被調(diào)用硫豆,才能使得線程重新進(jìn)入可執(zhí)行狀態(tài)。典型地笼呆,suspend() 和 resume() 被用在等待另一個線程產(chǎn)生的結(jié)果的情形:測試發(fā)現(xiàn)結(jié)果還沒有產(chǎn)生后熊响,讓線程阻塞,另一個線程產(chǎn)生了結(jié)果后诗赌,調(diào)用 resume() 使其恢復(fù)汗茄。
- yield() 方法:yield() 使得線程放棄當(dāng)前分得的 CPU 時間,但是不使線程阻塞铭若,即線程仍處于可執(zhí)行狀態(tài)洪碳,隨時可能再次分得 CPU 時間递览。調(diào)用 yield() 的效果等價于調(diào)度程序認(rèn)為該線程已執(zhí)行了足夠的時間從而轉(zhuǎn)到另一個線程.
阻塞時都不會釋放占用的鎖 - wait() 和 notify() 方法:(隸屬于 Object 類)兩個方法配套使用,wait() 使得線程進(jìn)入阻塞狀態(tài)瞳腌,它有兩種形式绞铃,一種允許 指定以毫秒為單位的一段時間作為參數(shù),另一種沒有參數(shù)嫂侍,前者當(dāng)對應(yīng)的 notify() 被調(diào)用或者超出指定時間時線程重新進(jìn)入可執(zhí)行狀態(tài)儿捧,后者則必須對應(yīng)的 notify() 被調(diào)用.必須在 synchronized 方法或塊中調(diào)用,釋放鎖
10 HashTable挑宠,HashMap
HashTable的方法是同步的菲盾,HashMap是未同步,所以在多線程場合要手動同步HashMap