JAVA 基礎知識 java
- Math.round(var); 用於四捨五入
- if(1)在java中不容許,C/C++能夠。
- void也是基礎數據類型之一。
- 全部基礎數據類型都有初值0或者0.0,引用類型初值爲null。
- this只能用於方法內部,用於表示 「調用這個方法的那個對象」 的引用。
- this還能夠調用其餘構造器,如:this(a,b);但只能用一次,且放在方法的第一行。
- static能夠簡單理解,全局的,只有一份,類加載時進行惟一一次初始化,不存在this,不能夠直接調用非static變量或方法(能夠非static引用入參,再在裏面new對象)。
- 可變參數...原理: 編譯器幫忙封裝成數組。
- finalize()方法,一個類容許有一個該方法(Object的方法),用於JVM進行回收,但不能夠直接調用!
- System.gc();用於回收runtime。
- 初始化順序:
父類靜態變量---父類靜態代碼塊---子類靜態變量---子類靜態代碼塊---父類非靜態變量(以及父類非靜態代碼塊)--父類構造函數---子類非靜態變量(以及子類非靜態代碼塊)---子類構造函數算法
口訣:
先靜態,再非靜態,再構造器。
先變量,再代碼塊。
public enum name{
A,B,C,D
}
類的static方法:values(),返回數組
非static方法:ordinal(),返回聲明順序數組
GC自適應算法緩存
- 引用記數 :對象有引用鏈接,則計數器+1,斷開鏈接時則減1。當計數器爲0時,啓動回收。
- 中止-複製 (copy-and-stop):先暫停程序,把堆中 「活」 的對象移動另外一個堆。
- 標記-掃描 (mark-and-swap):一樣暫停程序,是找到全部「活」的對象,打上標記,標記打完後,把沒被標記的對象清理出去。
↑ 自適應的,分代的,中止-複製,標記-掃描 垃圾回收期。。。。函數
JIT(just in time)編譯器:將程序編譯成機器碼,提高程序運行速度。
類加載時的兩種策略:優化
- 讓JIT編譯全部代碼。缺點:展開機器碼比字節碼大不少,致使程序速度慢。
- 惰性評估(lazy evaluation):必要時才讓JIT工做,從不執行的代碼就不讓它編譯。
HotSpot就採用了相似於法2的技術進行優化。將class字節碼與機器碼放入緩存,執行次數越多,越快。