java學習(3)構造器和垃圾收集器、數字與靜態

構造器和垃圾收集器

棧與堆

方法的調用和局部變量在,所有的對象在

棧頂上的方法是目前正在執行的。

對象的引用變量(就是遙控器)存放在棧上,而對象則存放到堆上

實例變量存放在所屬對象的堆空間上。

構造函數

構造函數並不是一個方法

構造函數沒有返回的類型,並且名稱要與類名一致

分辨方法和構造函數的辦法就是是否有返回類型

如果寫了一個帶有參數的構造函數,那麼應該再寫一個沒有參數的構造函數

構造函數重載,編譯器看的是參數的類型和順序,不是參數的名字

實例變量有默認值,局部變量沒有

構造函數可以是私有的

在創建新對象時,所有繼承下來的構造函數都會執行。

抽象類作爲父類,他的構造函數也會在具體子類創建出實例時執行。

調用父類的構造函數使用的是:super(); 如果我們在子類的構造函數裏面不寫,那麼編譯器會自動幫我們添加,只不過添加的是沒有參數的版本

使用this()來從某個構造函數調用同一個類的另外一個構造函數,this()只能用在構造函數中,且必須是第一行語句。super()和this()不能兼得。

對象的生命週期

當最後一個引用消失的時候,對象就會變成可回收的。

對null引用執行圓點運算符會在執行期遇到NullPointerException這樣的錯誤

數字與靜態

Math方法

最接近全局的方法。

這個類中的所有方法都不需要實例變量值,因爲這些方法是靜態的。

靜態(static)

靜態的方法是以類名來調用的,靜態的方法不需要類的實例

可以使用私有的構造函數來限制非抽象類被初始化

靜態的方法不能調用非靜態的變量,也不能調用非靜態的方法

以引用變量名調用靜態方法的程序代碼可以實現,但是不推薦使用

靜態變量的值對於所有的實例來說都相同,同一類所有的實例共享一份靜態變量

靜態變量會在該類的任何靜態方法執行前就初始化。

final

final的變量代表你不能改變它的值。

final的方法代表你不能覆蓋掉該方法。

final的類代表你不能繼承該類(也就是創建子類)

總結一下(這塊真的有點亂啊)

變量用static代表這是能夠修改的全局變量,變量用final代表這是不能修改值的變量(可以看成是全局的),abstract不能修飾變量。

類用abstract修飾表示是類本身不能聲明實例,只能由子類來聲明實例;類用final修飾表示類不能有子類來繼承;static不能修飾類。

方法用abstract修飾那麼該類也是abstract,表示該方法必須由子類覆蓋;方法用final代表子類中不能覆蓋該方法;方法用static表示該方法的調用時用類名來實現的,不需要實例。

 

autoboxing(自動裝箱)

包裝類型(Interger)和primitive主數據(int)可以相互轉換

可以用在很多的地方:方法的參數、返回值、Boolean表達式、數值運算、賦值

包裝也有靜態的實用性方法!(將String轉換成primitive主數據類型:Integer.parseInt)、(將primitive主數據類型轉換爲String Double.toString)

數值轉換成String,最簡單的方法是將數字接上現有的String  String doubleString = “ ” + d;

數字的格式化

調用靜態的String.format()並傳入值與格式設定

格式化說明的格式:%[argument number] [flags] [width] [.precious] type

format()函數不是用的重載實現的,而是使用的java的一項新的功能:可變參數列表

日期

Date Today = new Date();

String.format("%tA, %<tB %<td", Today);

操作日期可以使用:java.util.Calendar

Calendar cal = Calendar.getInstance();

靜態import

可以少打幾行代碼,但是會使代碼變得難以閱讀

11、異常處理

使用try/catch塊告訴編譯器調用方法有風險的

異常時一種Exception類型的對象

方法可以抓住其他方法所拋出的異常。異常總是會丟給調用方。會拋出異常的方法必須要聲明他有可能會這麼做

finally:無論如何都要執行的部分

異常時多態的,以異常的父類來聲明會拋出的異常

如果不想處理異常,可以把它duck掉來避開,但這是在踢皮球

異常處理規則:如果只帶有finally的try必須要聲明異常

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