以前的博客都是在網上摘摘抄抄的,沒有本身來寫一篇博客,並且最近因爲畢業設計和要找工做忙得焦頭爛額的,沒時間整理和學習。因此計劃完成畢業設計後,從新來整理一下 電腦的文件和網盤的文件,並把以前學過(已經忘記)的知識在從新複習一遍。明天打算去參加華工的招聘會,因爲以前的JAVA SE基礎基本都忘了,因此從新來過一遍。java
(1)基本數據類型正則表達式
byte , short , char , int , long , float , double , boolean編程
(2) this ,super 和 static緩存
this.成員變量 this.成員方法 this.構造函數app
super.成員變量 super.成員方法 super.構造函數dom
類名.靜態變量 類名.靜態方法ide
(3) 成員變量放置在堆內存中函數
局部變量保存在其所在方法的棧內存中,隨着方法的運行結束而結束工具
(4) switch學習
jdk7以前 switch 只能支持 byte、short、char、int 這幾個基本數據類型和其對應的封裝類型
jdk1.7後,整形,枚舉類,字符串均可以 , jdk1.7並無新的指令來處理switch string,而是經過調用switch中string.hashCode,將string轉換爲int從而進行判斷
(5) equals與==的區別
==是指對內存地址進行比較, equals()是對內容進行比較
(6) Object的方法
clone() toString() equals() hashcode() getClass() wait() notify() notifyAll()
(7) Java的四種引用
①強引用:最廣泛的一種引用方式,如String s = "abc",變量s就是字符串「abc」的強引用,只要強引用存在,則垃圾回收器就不會回收這個對象。
②軟引用:用於描述還有用但非必須的對象,若是內存足夠,不回收,若是內存不足,則回收。通常用於實現內存敏感的高速緩存,軟引用能夠和引用隊列ReferenceQueue聯合使用,若是軟引用的對象被垃圾回收,JVM就會把這個軟引用加入到與之關聯的引用隊列中。
③弱引用:弱引用和軟引用大體相同,弱引用與軟引用的區別在於:只具備弱引用的對象擁有更短暫的生命週期。在垃圾回收器線程掃描它所管轄的內存區域的過程當中,一旦發現了只具備弱引用的對象,無論當前內存空間足夠與否,都會回收它的內存。
④虛引用:虛引用必須和引用隊列 (ReferenceQueue)聯合使用。當垃圾回收器準備回收一個對象時,若是發現它還有虛引,就會在回收對象的內存以前,把這個虛引用加入到與之關聯的引用隊列中。系統沒法經過虛引用來獲取被引用的對象
(8) 重寫equals() : 知足 自反性 對稱性 傳遞性 一致性
(9)final
①final 方法 不能被重寫,可是能夠被重載
②final 變量:基本數據類型 -> 數據值不可變 引用類型 -> 地址值不能變
③不可變類: private final 修飾成員變量
提供帶參數的構造方法
只提供getter方法,不提供setter方法
保證引用的引用類型是不可變的
(10)final 和 abstract 互斥
final 和static 不能同時修飾方法,可是能夠同時修飾內部類
(11) 抽象類和接口的區別:
一、抽象類和接口都不能直接實例化,若是要實例化,抽象類變量必須指向實現全部抽象方法的子類對象,接口變量必須指向實現全部接口方法的類對象。
二、抽象類要被子類繼承,接口要被類實現。
三、接口能有抽象方法,默認方法和靜態方法(JDK8支持),抽象類能有抽象方法和其餘非抽象類的方法
四、接口裏定義的變量只能是公共的靜態的常量,抽象類中的變量是普通變量。
五、抽象類裏的抽象方法必須所有被子類所實現,若是子類不能所有實現父類抽象方法,那麼該子類只能是抽象類。一樣,一個實現接口的時候,如不能所有實現接口方法,那麼該類也只能爲抽象類。
六、抽象方法只能申明,不能實現,接口是設計的結果 ,抽象類是重構的結果
七、抽象類裏能夠沒有抽象方法
八、若是一個類裏有抽象方法,那麼這個類只能是抽象類
九、抽象方法要被實現,因此不能是靜態的,也不能是私有的。
十、接口可繼承接口,並可多繼承接口,但類只能單繼承。
(12) 內部類 內部類能訪問外部類的私有數據,可是外部類不能直接訪問內部類的實現細節
①靜態內部類 能夠包含靜態成員和非靜態成員,只能訪問外部類的靜態變量,接口只能包含靜態內部類
②非靜態內部類 不能擁有靜態成員,子類能夠是外部類
③局部內部類
④匿名內部類
(13) 枚舉類
①繼承於java.lang.Enum
②實例必須在第一行顯示列出
③構造方法爲private
④能夠包含抽象方法,可是方法前面不加abstract,並且必須提供實現
⑤values() 獲取全部的枚舉值
ordinal() 返回枚舉值在枚舉類的索引值
compareTo(E e) 比較枚舉值的先後順序
valueOf(Class class, String name) 返回制定枚舉類中指定名稱的枚舉值
(14) 對象在內存中的狀態
一、可達狀態
當一個對象被建立後,有一個以上的引用變量引用它。在有向圖中能夠從起始頂點導航到該對象,那麼它就出於可達狀態,程序能夠經過引用變量來調用該對象的屬性和方法。
二、可恢復狀態
若是程序中某個對象再也不有任何引用變量引用它,他將進入可恢復狀態,此時從有向圖的起始頂點不能導航到該對象。在這種狀態下,系統的垃圾回收機制轉變回收該對象所佔用的內存。在回收該對象以前,系統會調用可恢復狀態的對象的finalize方法進行資源清理,若是系統調用finalize方法從新讓一個以上的引用變量引用該對象,則該對象會再次編程可達狀態;不然,該對象將進入不可達狀態。
三、不可達狀態
當對象的全部關聯都被切斷,且系統調用全部對象的finalize方法依然沒有使該對象變成可達狀態後,這個對象將永久性地失去引用,最後變成不可達狀態。只有當一個對象出於不可達狀態,系統纔會真正回收該對象所佔用的資源。
(15) 強制系統回收垃圾的兩種方式
①System.gc();
②Runtime.getRuntime().gc();
(16) 經常使用的工具類
①Scanner
②System.currentTimeMill();
③Runtime.exec();
④Objects
⑤String
charAt(int index); 獲取索引對應的值
indexOf(int ch); indexOf(String str); 獲取值對應的索引
lastIndexOf(...);
compareTo(String string); 返回字符差或者長度差
concat(String string);
contentEquals(StringBuffer sb); 比較String和StringBuffer,包含的字符序列相同返回true
copyValueOf(char[] data); 等價於new String(char[] data)
substring();
getBytes();
toCharArray();
valueOf(X x); String str = Integer.valueOf(12);
⑥StringBuffer
⑦StringBuilder
append(s);
insert(i,s);
delete(a,b);
reserve(s);
⑧Math
pow(a,b);
floor(a);
ceil(a);
round(a);
sqrt(a);
⑨Random ThreadLocalRandon 僞隨機
Random rand = new Random(send);
rand.nextInt(a,b);
ThreadLocalRandom rand = ThreadLocalRandom.current();
⑩BigDecimal
new BigDecimal();
BigDecimal.valueOf();
對於浮點數
new BigDecimal("1.22");
BigDecimal.valueOf(1.22);
方法
add();
substract();
multiply();
divide();
pow();
XxxValue();
⑩①正則表達式
Pattern p = new Pattern("\\w*");
Matcher m = p.matcher("abc123456");
⑩② NumberFormat
SimpleDataFormat