Java Gossip学习笔记 (一)

From Gossip@caterpillar

語言技術:Java Gossip(一)

關於簡介 Java 的資料太多了,這輪不到我來介紹,您可以用 Google 搜尋到一堆 Java 的介紹,每本講授 Java 的書籍多多少少也會提到一些,您也可以從這篇 Java 歷史 介紹開始認識 Java。

Java 是我最熟悉的程式語言, 2004年9月30日 Tiger/J2SE 5.0 已經公佈,它有了一些大的變動與改進,這個分區主要整理一些我在瞭解 J2SE 5.0 過程中的一些心得。

JDK6  在 2006年12月初 正式公佈,當中的新增功能對於初學者來說,比較沒有很大的變動,在這份文件當中,會擷取幾個好用的 Java SE 6 功能加以介紹。


       
入門準備
    我不想告訴您學習Java很簡單(學習語言很簡單?基本上我認為只是書商與推銷語言的人在打的廣告標語...),至少學習Java的第一步,就要先搞定 PATH 與 CLASSPATH,如果您確定您搞定了,再來看以下的內容。
  • 基本 Console 互動
從互動中學習,是我最喜愛的學習方式。學習Java的第一步要先看的到您的程式執行結果,要可以對程式輸入一些資料,作一些傻瓜式的互動
    • 第一個Java程式
    • 給C 使用者的第一個Java 程式
    • 取得使用者輸入
    • 使用 BufferedReader 取得輸入
    • 標準輸入輸出串流
    • 主控台輸入格式控制
    • 使用 Console 物件 - JDK 6
  • 基礎入門
資料型態、變數常數、流程控制,學任何一個程式語言都不可缺少的過程,雖然無趣但很實際。
    • 資料型態
    • 變數、常數 
    • 算術運算 
    • 比較、條件運算 
    • 邏輯、位元運算 
    • 遞增、遞減運算
    • if 條件式 
    • switch 條件式 
    • for 迴圈 
    • while 迴圈 
    • break、continue

接觸物件
    在Java中所面對的「幾乎」都是物件(Object),所以首先要學的是一些基本的物件觀念,以及如何使用它們。
  • autoboxing、unboxing
基本(Primitive)資料型態的 autoboxing、unboxing是J2SE 5.0新特性,雖然提供了方便,但隱藏了細節,建議對物件(Object)有一定程度瞭解的人使用。
    • autoboxing、 unboxing
    • 小心使用 boxing
  • 陣列(Array)        
不管在其它語言中是如何,陣列(Array)在Java中可得看作一個物件,它有一些值得探討的特性。
    • 一維陣列物件
    • 二維陣列物件
    • 進階的陣列觀念
    • Arrays 類別
    • Arrays 的copyOf() - JDK 6
    • 物件陣列
    • foreach 與陣列
  • 字串(String)
字串也許是您在 Java中最常處理的物件,但也可能是最常被忽視的物件,但從此刻開始,無論如何請重視它。
    • String 類別
    • 不可變的(immutable)字串
    • 分離字串
    • 使用正則表示式(Regular expression)
    • Pattern、 Matcher
    • StringBuilder 類別
    • 命令列引數(Command line argument)

物件導向
    請記得一個觀念:學會一個支援物件導向的程式(如 Java)與學會物件導向(程式設計)觀念是兩碼子事。這邊儘量在說明Java的物件導向支援特性時,同時帶入一些物件導向觀念。
  • 封裝(Encapsulation)
封裝物件資訊是第一步,您要瞭解如何使用類別定義物件,像是定義物件的屬性、行為等等,類別是建構物件時所依賴的規格書。
    • 使用類別(Class)定義物件
    • 類別成員(Class member)
    • 建構方法(Constructor)
    • 關於 this
    • 關於 static 成員
    • 重載(Overload)方法
    • 不定長度引數
    • 遞迴方法
    • 垃圾回收
  • 繼承(Inheritance)  
您可以基於某個(父)類別的定義加以擴充,而制訂出一個新的(子)類別定義,兩個類別間某些定義可能相同或不同,新的(子)類別也可能擁有原來的(父)類別所沒有的定義。
    • 擴充(extends)父類別
    • 被保護的(protected)成員
    • 重新定義(Override)方法
    • Object 類別
    • final 關鍵字
  • 多型(Polymorphism)
抽象類別、介面型態在物件導向設計中伴演著極重要的角色,而其背後的多型應用,其使用的適當與否,足以影響程式的架構與未來的可維護性。
    • 抽象類別(Abstract class)
    • 介面(interface)型態
    • 介面與多重繼承

資源管理
  • 組織您的程式
什麼資源該放在什麼地方,預先作好整理與分類,這樣才不會到處散落,滿地都是*.class檔案。
    • 內部類別(Inner class)
    • 套件(package)
    • 預設建構子
    • 權限修飾與存取限制
    • 常數設置
    • import 靜態成員(Static import)
  • 例外處理(Exception Handling)與斷言(Assertion)
一個程式的撰寫的過程中,避免程式執行時的錯誤,往往佔了程式開發時程的絕大多數時間,對於避免程式執行時的錯誤,Java 提供了例外處理機制。
    • 簡介例外處理
    • throw、 throws
    • 例外的繼承架構
    • 斷言(Assertion)
  • 列舉型態(Enumerated Types)
J2SE 5.0 新增了列舉型態,除了常數設置的功能之外,它還給了您許多編譯時期的檢查功能,但別想的太複雜,它本質上還是一個類別。
    • 簡介列舉型態
    • 深入列舉型態
    • 列舉上的方法
    • 因值而異的類實作(Value-Specific Class Bodies)
  • 泛型(Generics)
J2SE 5.0 提供的泛型,目的在讓您定義「安全的」泛型類別(Generics class),事實上 J2SE 5.0 前就用 Object 解決了泛型類別的部份需求,J2SE 5.0 之後再解決的是型態安全問題。
    • 沒有泛型之前
    • 定義泛型類別
    • 幾個定義泛型的例子
    • 限制泛型可用類型
    • 型態通配字元
    • 擴充泛型類別、實作泛型介面

參考資料
        如果您是入門 Java 的新手,記得 Java 已經有近10年的歷史了,網路上有很多對您有用的資料,記得 google 是您的好朋友,您也可以從下面的FAQ(Frequently Asked Questions)文件解決您不少的疑惑。
  • 新手 FAQ 資料

        下面的討論區與Wiki會對您很有幫助。在使用討論區要記得的是,不要慌慌張張的發問,先用搜尋功能找找答案,要提問前先看看別人都是如何發問的,並注意每個版面的使用規範。
  • http://www.javaworld.com.tw/
  • http://www.javaworld.com.tw/confluence/homepage.action

        Java 的入門書很多,每個人的入門需求不儘相同,這邊不作任何的入門書籍的推薦;進階書的部份,我想下面這本是最適合的,而且它是免費的,目前您也可以購買到中文翻譯版本。
  • Thinking in Java

        最後當然別忘了,Sun 的 Java 官方網站 有很多資源,若遇到不懂的類別使用方法,API是最佳的參考文件。
  • J2SE 5.0 in a Nutshell
  • J2SE 5.0 Documentation
  • J2SE 5.0 API Specification
 

你可能感兴趣的:(java,generics,object,J2SE,Arrays,Class)