二十、列舉物件與垃圾收集

Download Report

Transcript 二十、列舉物件與垃圾收集

Java 入門到認證
二十、列舉物件與垃圾收集
作者:許裕永
1、Enum

1-1 宣告
 enum EnumName{ObjectName1,ObjectName2….}
 enum:關鍵詞,Java編譯器會以背景作業方式建立繼承Enum類別的子類別,並建構
類別中的列舉物件。
 EnumName:自訂的類別名稱。
 ObjectName:自訂的列舉物件名稱,個數不限。這些物件一定是:public、f
inal、static。

1-2 自訂建構方法
 我們可以像開發類別一樣,在eunm中,宣告及定義資料成員、方法成員及建構方法。

1-3 預設的重要方法
 String name()
 int ordinal()
 static T valueOf(Class<T>
enumType, String
name)
 static T valueOf(String name)
 static enumType[] values()

1-4 宣告為內部類別
 enum也可以宣告在類別之中,成為內部類別,但是不可以宣告在方法之中。
 宣告為內部類別的enum,預設為static。
2、Garbage Collec
tion

2-1 物件收原基本原理
 Java提供了垃圾物件自動回收機制,讓設計師可以不必分心於
物件的銷毀。
 執行環境會依照程式執行的狀況,找到適當的時機,再把記錄於垃
圾集合件中的物件代號所代表的所有物件,全部銷毀。
 這種機制,或許浪費了一些效能,但卻可以省下設計師不少的困擾
(時間)。

2-2 適合被回收的物件
 適合被回收的物件只有一種:沒有參考變數儲存其物件代號的物件。

2-3 立刻執行物件的銷毀
 呼叫類別System中的類別方法成員gc()。
 建構RunTime物件,執行其實體方法成員gc()。
3、認證重點整理

3-1 Enum
 Enum是一個抽象類別。但是,它不接受設計師撰寫類別來繼承它。
 enum是一個宣告列舉類別的關鍵詞,Java編譯器會以背景作業方式







建立繼承Enum類別的子類別,並建構類別中的列舉物件。
我們可以像開發類別一樣,在eunm中,宣告及定義資料成員、方法成員
及建構方法。
enum中的類別常數成員宣告完畢後,必須上‘;’,才可以開始自訂其
他的成員或方法。
若自訂有參數的建構方法,enum中的類別常數成員在宣告時,必須用小
括號提供建構方法參數。
enum中自訂建構方法的存取限制,若宣告為public將無法編譯。
switch支援enum成員的判斷,判斷時便是自動呼叫該成員的or
dinal()來取得整數值。
enum也可以宣告在類別之中,成為內部類別,但是不可以宣告在方法之
中。
宣告為內部類別的enum,預設為static。
3、認證重點整理(二)

3-2 Garbage Collection
 Java的執行環境,建構了一個垃圾集合物件(Garbage








Colleti
on),任何程式中建構的物件,只要是適合被回收的物件,Java便會把該物件
的物件代號,記錄於Garbage Collection物件之中。
執行環境會依照程式執行的狀況,找到適當的時機,再把記錄於垃圾集合件中的物件
代號所代表的所有物件,全部銷毀。
適合被回收的物件只有一種:沒有參數變數儲存其物件代號的物件。
物件建構之後,沒有把物件代號指派給參考變數的物件。此類物件在其執行完該行敍
述句後,便會被記錄於垃圾集合物件之中。
把B物件之物件代號,指派給原先儲存A物件代號的參考變數,而A物件已經沒有任
何參考變數儲存它的物件代號時,A物件便會被記錄到垃圾集合物件之中。
指派null給原先儲存A物件代號的參考變數,而A物件已經沒有任何參考變數儲
存它的物件代號時,A物件便會被記錄到垃圾集合物件之中。
一個被孤立的物件群組,會全部被回收。
呼叫類別System中的類別方法成員gc(),可以命令Java執行環境立刻
執行物件銷毀的動作。
取得RunTime物件,執行其實體方法成員gc(),可以命令Java執行環
境立刻執行物件銷毀的動作。