JAVA基礎知識,你真的會了嗎

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。
  • 初始化順序:

父類靜態變量---父類靜態代碼塊---子類靜態變量---子類靜態代碼塊---父類非靜態變量(以及父類非靜態代碼塊)--父類構造函數---子類非靜態變量(以及子類非靜態代碼塊)---子類構造函數算法

口訣:
先靜態,再非靜態,再構造器。
先變量,再代碼塊。
  • 枚舉enum:
public enum name{
    A,B,C,D
}

類的static方法:values(),返回數組
非static方法:ordinal(),返回聲明順序數組


GC自適應算法緩存

  • 引用記數 :對象有引用鏈接,則計數器+1,斷開鏈接時則減1。當計數器爲0時,啓動回收。
  • 中止-複製 (copy-and-stop):先暫停程序,把堆中 「活」 的對象移動另外一個堆。
  • 標記-掃描 (mark-and-swap):一樣暫停程序,是找到全部「活」的對象,打上標記,標記打完後,把沒被標記的對象清理出去。

圖片.png
↑ 自適應的,分代的,中止-複製,標記-掃描 垃圾回收期。。。。函數


JIT(just in time)編譯器:將程序編譯成機器碼,提高程序運行速度。

類加載時的兩種策略:優化

  1. 讓JIT編譯全部代碼。缺點:展開機器碼比字節碼大不少,致使程序速度慢。
  2. 惰性評估(lazy evaluation):必要時才讓JIT工做,從不執行的代碼就不讓它編譯。
HotSpot就採用了相似於法2的技術進行優化。將class字節碼與機器碼放入緩存,執行次數越多,越快。
相關文章
相關標籤/搜索