首先:
java基礎(chǔ)的基礎(chǔ)
1.位運算符 (博客中 位運算的應(yīng)用)
2.集合的特點(ArrayList,linkedList(雙列集合),voter, HashMap,LinkedHashMap)
3.多線程
4.泛型的應(yīng)用 泛型的特點 泛型的方法
5.static final 靜態(tài)與常量
6.java的軟引用,弱引用霉猛,強(qiáng)引用,(垃圾回收機(jī)制)
1---詳細(xì)見博客
二.集合
1.List集合
ArrayList 數(shù)組結(jié)構(gòu)尺锚,線程不安全,效率高惜浅,查詢速度快
LinkedList 鏈表結(jié)構(gòu)瘫辩,線程不安全,效率高坛悉,增刪快
vector 數(shù)組結(jié)構(gòu)伐厌,線程安全,增刪裸影,查詢都慢挣轨,效率低,被ArrayList替代
2.Map集合
HashMap 郵鍵值對儲存形式轩猩【戆纾可以空(null)值和鍵,效率高均践,線程不安全
LinkedHashmap 基于HashMap結(jié)構(gòu)之上晤锹,獲取順序與插入順序一樣,也可以通過構(gòu)造方法設(shè)置最近最少使用的次序(LUR)彤委。
ThreeMap 基于紅黑樹鞭铆,查看數(shù)據(jù)時候需要排序
三.多線程
1.線程的基本概念:
多線程操作的最小執(zhí)行單位,進(jìn)程中包含多個線程焦影,他們處理不同的任務(wù)车遂,組成了一個應(yīng)用的整個體系結(jié)構(gòu)。
2.實現(xiàn)線程的方式
繼承Thread偷办,實現(xiàn)Runnable
區(qū)別:實現(xiàn)Runnable接口的擴(kuò)展性好艰额,因繼承只能多繼承。
3.線程中各種方法的去別:
sleep會一直擁有鎖椒涯,但wait方法執(zhí)行時柄沮,會放掉鎖。wait通常用于線程之間的交互,sleep用于停止線程祖搓。
yield()狱意,線程讓步,當(dāng)一個線程執(zhí)行yield()方法拯欧,證明該線程執(zhí)行讓步详囤,讓其他線程有可能的獲取資源運行
join方法:加入,當(dāng)一個線程執(zhí)行join(),證明該線程執(zhí)行加入操作镐作,會終止當(dāng)前正在運行的線程藏姐,開始執(zhí)行join的線程。
4.線程池
是統(tǒng)一管理線程的服務(wù)對象该贾。優(yōu)點是通過控制線程的創(chuàng)建和銷毀羔杨,節(jié)省資源,提高效率杨蛋。
四.泛型
1.編寫的代碼可以被不同的對象類型所引用,泛型的本質(zhì)是參數(shù)化類型,所操作的數(shù)據(jù)類型被指定為一個參數(shù),
泛型有三種:泛型類兜材,泛型引用,泛型接口逞力。
2.類型安全:提高java程序的類型安全曙寡,編譯時期就可以檢查出類型不正確導(dǎo)致的類型轉(zhuǎn)換異常,消除強(qiáng)制類型轉(zhuǎn)換
線程有幾種狀態(tài):
a寇荧、新建狀態(tài)(new)
b举庶、就緒狀態(tài)(Runnable)
c、運行狀態(tài)(Running)
d揩抡、阻塞狀態(tài)(Blocked)
e灯变、死亡狀態(tài)(Dead)
五.static final靜態(tài)與常量
1.static 靜態(tài)的三種表的方式 靜態(tài)方法,靜態(tài)變量捅膘,靜態(tài)代碼塊
靜態(tài)隨著類的加載而加載
靜態(tài)只能調(diào)用靜態(tài)
靜態(tài)不能被 引用調(diào)用例如(this,supper)
靜態(tài)方法的調(diào)用不依附與實例對象
2.final 常量
final關(guān)鍵字可以用來修飾類滚粟、方法和變量(包括成員變量和局部變量)寻仗。
final修飾的類不能被繼承,重寫凡壤,
當(dāng)修飾變量的時候署尤,如果是基本數(shù)據(jù)類型的變量,則其數(shù)值一旦在初始化之后便不能更改亚侠;如果是引用類型的變量曹体,則在對其初始化之后便不能再讓其指向另一個對象。
六硝烂,軟引用 弱引用 強(qiáng)引用
強(qiáng)引用:
只要引用存在箕别,垃圾回收器永遠(yuǎn)不會回收
Object obj = new Object();
//可直接通過obj取得對應(yīng)的對象 如obj.equels(new Object());
而這樣 obj對象對后面new Object的一個強(qiáng)引用,只有當(dāng)obj這個引用被釋放之后,對象才會被釋放掉串稀,這 也是我們經(jīng)常所用到的編碼形式
軟引用:
非必須引用除抛,內(nèi)存溢出之前進(jìn)行回收,可以通過以下代碼實現(xiàn)
Object obj = new Object();
SoftReference<Object> sf = new SoftReference<Object>(obj);
obj = null;
sf.get();//有時候會返回null
這時候sf是對obj的一個軟引用母截,通過sf.get()方法可以取到這個對象到忽,當(dāng)然,當(dāng)這個對象被標(biāo)記為需要回收的對象時清寇,則返回null喘漏;軟引用主要用戶實現(xiàn)類似緩存的功能,在內(nèi)存足夠的情況下直接通過軟引用取值华烟,無需從繁忙的真實來源查詢數(shù)據(jù)翩迈,提升速度;當(dāng)內(nèi)存不足時垦江,自動刪除這部分緩存數(shù)據(jù)帽馋,從真正的來源查詢這些數(shù)據(jù)。
弱引用:
第二次垃圾回收時回收比吭,可以通過如下代碼實現(xiàn)
Object obj = new Object();
WeakReference<Object> wf = new WeakReference<Object>(obj);
obj = null;
wf.get();//有時候會返回nullwf.isEnQueued();//返回是否被垃圾回收器標(biāo)記為即將回收的垃圾弱引用是在第二次垃圾回收時回收绽族,短時間內(nèi)通過弱引用取對應(yīng)的數(shù)據(jù),可以取到衩藤,當(dāng)執(zhí)行過第二次垃圾回收時吧慢,將返回null。弱引用主要用于監(jiān)控對象是否已經(jīng)被垃圾回收器標(biāo)記為即將回收的垃圾赏表,可以通過弱引用的isEnQueued方法返回對象是否被垃圾回收器標(biāo)記检诗。