Java零散知識點學習記錄

1.label標籤:標籤結合continue和break使用,表示跳至標籤所指示的位置繼續執行代碼。常見在嵌套循環中,if判斷後跳過某些語句等。

2.方法的重載是不能通過返回值的不同來實現的,雖然可以通過參數順序的不同來實現,但是這不是一種推薦的做法。

3.我們知道原始類型會有默認的固定的初始化值。比如int i; i會有默認值0。 這個規則只在作爲類成員時生效。如果在其他的代碼中定義了原始類型但未初始化,雖然這個定義不報錯,但是一旦有使用到該變量的代碼,那麼是會報錯的,提示你必須初始化。

4.注意,boolean, byte(封裝類是Byte),void(封裝類是Void)是原始類型,但是void並不佔實際字節。
在存儲模型中,原始類型不是對象,所以其可以存放在寄存器中獲取更快的訪問速度。

5.BigInteger可以支持任意長度的整數而BigDecimal可以支持任意長度的小數,當然代價就是效率的下降。

6.Java的單根結構(The singly rooted hierarchy)即所有類都繼承自Object。這使得垃圾回收的實現和一些系統級的操作有很多的便利。

7.public static void main(String… args)表示的是可以傳多(0~n)個String參數給這個方法,並像String[] args一樣。 String… args中的args也就是一個數組。可以用for去遍歷。

8.protected表示,同一個包或者繼承其的類可以使用protected聲明的變量和方法。 請注意這個現象以更好的理解protected的含義。類A和B在不同的包中,B有protected的方法。如果A繼承了類B但沒有重寫方法。那麼在對象A內部,可以使用A a = new A();a.protected方法,但卻不能使用B b = new B(); b.protected方法。

9.默認無修飾符的變量/方法表示只有在本包內可見其它形式都不可見。

10.在實現接口方法或抽象類的抽象方法時,方法體中的throws exception可以不在實現方法裏出現。

11.Java.lang.number是所有數值類型都必須實現的抽象類。閱讀源碼你會發現所有數據類型都會有intValue(),floatValue()等方法。Float f = new Float(“1.22”);
f.doubleValue()–1.2200000286102295
f.floatValue()–1.22
f.intValue()–1

12.考慮下面的代碼

public class Sub extends Father{
    public void m1(){
        System.out.println("sub m1");
        super.m1();
    }
    public void m2(){
        System.out.println("sub m2");
        super.m2();
    }
}

public class Father(){
    public void m1(){
        System.out.println("father m1");
        m2();
    }
    public void m2(){
        System.out.println("father m2");
    }
}
如果創建sub,不管是sub.m1()還是由sub上溯造型成father.m1(),輸出都是
sub m1
father m1
sub m2
father m2


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