Java,史上最強幹貨分享,看過的人都感嘆萬千

1.你例如1_000_000(或者0b1111_0100_0010_0100_0000)表示100萬。下劃線閱讀起來更容易,JAVA編譯器會直接刪除他們

2.對象在堆中創建,類的成員變量默認有初始值。而局部變量一般在棧中,必須在操作前明確初始化,否則編譯不通過。

3.Java創建一個對象分爲強引用、軟引用、弱引用、虛引用,

強引用是用關鍵字new 直接創建的對象,只要某

個對象有強引用與之關聯,JVM必定不會回收這個對象,即使在內存不足的情況下,JVM寧願拋出OutOfMemory錯誤也不會回收這種對象。

軟引用是用來描述一些有用但並不是必需的對象,在Java中用java.lang.ref.SoftReference類來表示。對於軟引用關聯着的對象,只有在內存不足的時候JVM纔會回收該對象。因此,這一點可以很好地用來解決OOM的問題,並且這個特性很適合用來實現緩存:比如網頁緩存、圖片緩存等。

弱引用也是用來描述非必需對象的,當JVM進行垃圾回收時,無論內存是否充足,都會回收被弱引用關聯的對象。在java中,用java.lang.ref.WeakReference類來表示。

虛引用和前面的軟引用、弱引用不同,它並不影響對象的生命週期。在java中用java.lang.ref.PhantomReference類表示。如果一個對象與虛引用關聯,則跟沒有引用與之關聯一樣,在任何時候都可能被垃圾回收器回收。

4. final修飾的類不能被繼承,修飾的方法不能被覆蓋。對於全局成員,final必須在定義時初始化,與默認值和static無關。而對於方法中的final,在操作前必須初始化。final修飾的變量只能被賦值一次。final的語義其實就是不可以改變引用的指向,但其指向的對象的狀態仍然可以改變。這點與C++的頂層const類似。狀態不改變的類稱爲不可變類。

5.JDK10,11可以使用var 關鍵字聲明變量,例如 var obj = new Object();

6.JDK11之後,Oracle公司要對JDK收費,不過個人學習使用還是免費,商業使用目的要收費

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章