java 基礎知識回顧

Java三大特性

繼承封裝多態

基礎數據類型

  1. 包裝類的自動拆箱,自動裝箱

  2. String類型
    String拼接

    String str = “a” + “b”;
    String str2 = str + “a”;
    表達式中只有常量,在編譯期間就會完成拼接計算。
    表達式存在變量,等到運行期纔會計算。
    注意指向地址問題.

    String.intern()
    在jdk1.6中,程序會從常量池中返回或者創建
    在jdk.1.7中,程序會從常量池中返回,沒有就去堆中查詢和創建。(new 出來的都在堆裏面)

    String.equals()
    判斷的是地址用==
    然後比內容。

  3. StringBuffer 和 StringBuild
    兩者最底層都繼承自可變字符數組
    > char[] value
    >初始化容量爲16,擴容方式爲: length2+2
    >如果length
    2+2大於等於int.MAX_VALUE,就取int.MAX_VALUE,否則就拋出異常了。OutOfMemoryError();

  4. String的不可變性
    即對String進行賦值或者修改的話,實現是直接修改指針,指向新值就行了。、
    原因:
    底層實現爲數組,被final修飾,不可繼承,private私有。

    private final char value[];

final關鍵字

  1. 修飾類,方法,引用
  2. 修飾類,該類不能被繼承。並且這個類的對象在堆中分配內存後地址不可變。
    修飾方法,方法不能被子類重寫。
    修飾引用,引用無法改變,對於基本類型,無法修改值,對於引用,雖然不能修改地址> > 值,但是可以對指向對象的內部進行修改。

抽象類和接口

1 抽象類一般會實現一部分操作,並且留一些抽象方法讓子類自己實現,比如Stringbuffer和Stringbuilder的父類abstractStringbuilder。

2 接口一般指一種規定,比如一個map接口中,可能需要實現增刪改查等功能,如果你想實現一個具體map,這些方法就必須按照規定去實現。

3 另外,一個類可以實現多個接口,但是不能繼承多個類。
然而接口卻可以繼承多個其他接口。這一點很神奇。

代碼和代碼塊加載順序

局部代碼塊
主要作用是限定變量生命週期,達到GC標準來做內存管理。
方法內部。
構造代碼塊
構造代碼塊先於構造方法執行,每次創建對象時都會執行一次。
用於對象初始化。
類內部。
靜態代碼塊
靜態代碼塊只執行一次,所以對象共用。用於初始信息配置。

內部類

待續…

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