Mathjava
public static double random() { return RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble(); } // 取值範圍[0,1)
若要取值[1,10]: (int)(Math.random() * 10 )+ 1面試
使用{}括起來的代碼,可分爲 局部代碼塊,構造代碼塊,靜態代碼塊,同步代碼塊dom
局部代碼塊: 在方法中;限定變量生命週期,及早釋放,提升內存利用率spa
構造代碼塊: 在類中方法外;多個構造方法中相同的代碼存放到一塊兒,每次調用構造都執行,而且在構造方法前執行對象
靜態代碼塊: 在類中方法外,加static修飾;給類進行初始化,在加載的時候就執行,而且只執行一次blog
面試題? 靜態代碼塊 構造代碼塊 構造方法的執行順序?繼承
靜態代碼塊>構造代碼塊>構造方法接口
繼承是類與類之間的關係,讓子類自動具有定義在父類中的屬性和行爲,從而達到代碼複用的目的 生命週期
格式: 經過extends關鍵字能夠實現類與類的繼承,class 子類名 extends 父類名內存
extends: 單繼承有且只有一個父類; 不寫extends,也會有一個默認的父類(Object, java中的根類)
這個類被稱爲父類,基類或者超類;這多個類能夠稱爲子類或者派生類
類與類的關係: is a 繼承; has a 組合
繼承的內存實現: 首先調用父類的構造方法,而後再調用子類的構造方法,構成一個完整的對象
特色: 1 來自父類的屬性和行爲,都會無條件的繼承,可是,可否訪問到,是看父類中定義的修飾符
2 父類的構造方法不會被子類繼承
緣由: 2.1 語法上,構造方法要求與類名保持一致,因此一個子類不可能有一個構造方法的名字是父類的類名
2.2 邏輯上,構造方法是用來產生對象的,子類不可能擁有產生父類對象的方法
3 只能單繼承,可是支持多層繼承
繼承的優勢: 結構清晰;缺點: 子類的豐富度不夠,靈活性不夠,因此Java中能夠使用接口類,進行彌補
子類擁有父類相同的行爲,被稱爲方法覆蓋,方法重寫
特色: 1 方法名不能變 2 參數列表相同 3 返回類型相同 4 訪問修飾符不能比父類的低
5 重寫後的方法不能拋出比重寫前更多的異常