2013年5月27日 星期一

Java 中this關鍵字的用法

  • 定義類別時,除了要取名之外,還得訂出該類別的屬性與方法。完成定義之後,類別就可以當做一種資料型態,用來宣告變數,這些變數會指向未來由類別所衍生的物件。
  • 在定義類別中的案例方法時,可能會發生一種情況,就是方法中的程式行引用到物件本身,這時候我們並不知道未來物件物的名稱是什麼,所以Java語法提供了this關鍵字,讓我們能從案例方法的程式行中引用到物件本身。

Java建構子(constructor)的用途

  • Java 中建立物件 (object) 需要建構子 (constructor),如果類別 (class) 沒有定義建構子,編譯器 (compiler) 就會提供一個預設的建構子 (default constructor)。
  • 建構子的主要目的在於建立物件的過程中,也就是使用 new 關鍵字 (keyword) 的時候,程式 (program) 建立物件所執行的工作,這些工作通常就是初始化物件的屬性 (field) 。
  • 如果類別沒有定義建構子,編譯器會提供預設預建構子,預設建構子為沒有參數 (parameter) 的版本。

2013年5月23日 星期四

在使用StringBuffer與StringBuilder的差異

  • StringBuffer類別所代表的緩衝區都有一定的容量,只要字串緩衝區所包含的字串長度沒有超出此容量,就無需再分配新的內部緩衝區陣列。如果內部緩衝區溢位,則此字串容量會自動增大。
  • StringBuilder類別是一個可變長度的字串,它提供一個與StringBuffer相容的應用程式介面,但是不保證同步。該類別被設計用來當作StringBuffer的一個簡易替換,用在字串緩衝區被單一執行緒使用的時候。如果可能,建議優先採用該類別,因為在大多數程式的實作中,它比StringBuffer要快。
  • 每個StringBuilder都有一定的容量,只要StringBuilder所包含的字串長度沒有起出此容量,就無需分配新的內部緩衝區。如果內部緩衝區溢位,則此容量自動增大。
  • 將StringBuilder用於多個執行緒是不安全的,如果應用程式需要具備同步的功能,則建議使用StringBuffer。
  • 基本上StringBuilder與StringBuffer類別的功能相同,主要差異點在於是否用於多執行緒的環境。StringBuffer因為需要考慮到執行緒安全,效能較差;StringBuilder不需要考慮執行緒的問題,因此效能較

Java套件的概念

  • Java語言中的「套件」是由一群相關的類別與介面所組成。
  • 如果沒有套件的機制,我們所看到的程式或是系統,將是一堆難以估算的類別與介面,讓我們無法知道整個程式或是系統的結構。
  • 有了套件之後我們便可以依照功能用途,將相關的類別或介面組合成套件,在使用、參考與維謢上都更為簡潔與方便;同時,更可以提高軟體元件或模組的重複使用。
觀念補充
  • Java 的類別定義可以用套件(package)來組合,通常也稱為頂層(top-level)的類別。除了頂層類別以外,還有其他種類的類別。例如區域類別(local class),區域類別的定義存在於程式方塊(block)中,引用時也限於所在的方塊裡頭。至於物件,有一個大家必須瞭解的觀念,就是物件占有記憶體空間。C/C++中常用「malloc()」函式來配置記憶體空間,Java省掉了這個麻煩,直接用new關鍵字來指示系統做記憶體的配置。不過,已配置的空間有回收的問題,這一部分是由系統自動處理,也就是俗稱的「垃圾回收(Garbage collection)」機制。所以Java中的物件是有生命週期的,從記憶體空間配置的時候開始,當空間回收時,物件也跟著消失了。

程式館的基本概念

  • 多數的程式語言都提供程式舘(library),將常用、低階或特定功能的模組,在該言被發行的同時便完成程式庫的提供。
  • 函式庫、程序庫或程式館雖名稱各異,但其功能則是相同,在於簡化並協助程式設計人員開發軟體系統。