1 / 162

SL-275 Java Programming Language 補充資料

SL-275 Java Programming Language 補充資料. Sean Cheng sean.cheng@ever.com.tw. Sun Certified Path. J2SE. J2ME. SUN CERTIFIED PROGRAMMER FOR JAVA 2 PLATFORM SCJP. SUN CERTIFIED MOBILE APPLICATION DEVELOPER FOR J2ME PLATFORM SCMAD. J2EE. SUN CERTIFIED DEVELOPER FOR JAVA 2 PLATFORM SCJD.

starr
Download Presentation

SL-275 Java Programming Language 補充資料

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SL-275Java Programming Language補充資料 Sean Cheng sean.cheng@ever.com.tw

  2. Sun Certified Path J2SE J2ME SUN CERTIFIED PROGRAMMER FOR JAVA 2 PLATFORM SCJP SUN CERTIFIED MOBILE APPLICATION DEVELOPER FOR J2ME PLATFORM SCMAD J2EE SUN CERTIFIED DEVELOPER FOR JAVA 2 PLATFORMSCJD SUN CERTIFIED WEB COMPONENT DEVELOPER FOR J2EE PLATFORM SCWCD SUN CERTIFIED BUSINESS COMPONENT DEVELOPER FOR J2EE PLATFORM SCBCD SUN CERTIFIED ENTERPRISE ARCHITECT FOR J2EE TECHNOLOGY SCEA

  3. SCJP

  4. SCJP Objectives • 宣告與存取控制 • 陣列 • 建構式 • 宣告類別, 巢狀類別, 方法, 參考變數, 靜態變數與區域變數與正確的修飾子 • 流程控制, assertions與例外控制 • if 和switch 分支敘述 • while, do 和for 迴圈敘述 • 例外控制 • 正確的使用assertions與分辨適合與不適合使用

  5. SCJP Objectives • 垃圾回收機制 • 瞭解程式碼中符合垃圾回收機制的物件 • Java 程式語言 • 正確的使用package與import敘述, 類別, 內部類別, 抽象類別與介面的宣告, 方法與變數的宣告 • main 方法與命令列參數 • Java程式語言關鍵字 • 基本資料型態的資料範圍

  6. SCJP Objectives • 運算子與指定 • 多載, 覆載, 執行時期型態與物件導向 • 執行緒 • java.lang套件 • 集合資料架構

  7. How to be a SCJP • 向昇陽公司購買准考證(voucher) • 網址: http://tw.sun.com/education/Exam_path.html • 向Prometric報名考試, 約定考試時間與地點 • 網址: http://www.2test.com • 免付費電話(國語): 0080-161-1104 • 在考試約定時間15分鐘前攜帶身份證到考場準備考試

  8. Congratulations • 考試結束後馬上知道結果, 考場人員會交給你一份成績單, 請保存好成績單 • 通過認證後約二週到一個月就可以收到美國昇陽公司寄出的Successful kits • SCJP證書 • SCJP徽章 • SCJP卡片 • SCJP Logo使用授權同意書

  9. SL-110 Java初階程式設計 SL-275 Java程式設計 OO-226 OOAD Using UML SL-314 Java Web 元件 FJ-310 J2EE相容應用程式 SL-285 Java程式實務 SL-351 Java進階商用元件 Sun Java Course Path

  10. 課程準備 • 電腦基本操作(Windows 9x, 2000, XP) • 使用簡單的文字編輯器撰寫文件或程式 • 使用瀏覽器(IE or Netscape) • 課程環境設定 • Download Java SDK及文件 • 安裝 Java SDK及文件 • 環境變數設定 • Path = <JAVA_HOME>\bin • ClassPath = . • 安裝文字編輯器 (EditPlus2)

  11. Module 1 Getting Started

  12. Java Key Concepts • 物件導向 (Object-Oriented) • 分散式 (Distributed) • 簡單 (Simple) • 多執行緒 (Multithreaded) • 安全性 (Secure) • 跨平台 (Platform-independent)

  13. …… …… …… …… …… …… Class Loader javac java *.java *.class Byte code Verifier Interpreter JIT Code Generator Runtime Hardware Java Runtime Environment • Loads Code • Class Loader • Verifies Code • Bytecode Verifier • Executes Code • Runtime Interpreter

  14. Object Interaction System Entry Point Orders Shirt Customer Date Shirt Shirt

  15. Optional Class Structure • Class as object’s blueprint • Declare class for every object • Class 基本結構 • Class declaration • Attributes • Methods (operations) • Comments

  16. Structuring Classes public class Shirt { public int shirtID = 0; public String description = "-description required-"; public char colorCode = 'U'; public double price = 0.0; public int quantityInStock = 0; public void displayShirtInformation() { System.out.println("Shirt ID: " + shirtID); System.out.println("Shirt description:" + description); System.out.println("Color Code: " + colorCode); System.out.println("Shirt price: " + price); System.out.println("Quantity in stock: " + quantityInStock); } }

  17. Name of the class Keyword Accessibility Class Declaration [modifiers] class <class_name> { } • Modifier為public的類別,需存在class_name.java的檔案中 • 一個Java檔案,可包含一個以上的類別宣告 • 多個類別宣告在一個Java檔案中,只能有一個public的類別

  18. Initialize literal values Name of the attribute Primitive or reference type Accessibility Attribute Variable Declaration [modifiers] <type> <name> [=initial_values]; • 程式中用變數來存放需使用到的資料 • 變數定義在class body內用來表示物件的屬性 • 變數也可以用存放臨時使用到的資料

  19. Arguments list Name of the method Return data type Accessibility Method Declaration [modifiers] <return_type> <name> ([arguments]) { } • 方法如不需傳回值,return type 為 void • Argument list: • 可為0~N個 • Type Name • 若有一個以上,用,隔開

  20. Comments • 單行註解 public int shirtID = 0; //Default ID for the shirt // The color codes are R= Red, B= Blue • 多行註解 /* this is a multi-line comment */ • JavaDoc 註解 /** The following comment will be show in JavaDoc */

  21. String array argument Name of the method No return data Modifiers main Method public static void main (String args[]) { } • 符合標準的main(),才可被JRE當作程式的進入點 • Modifier • 可加上final • 順序可不同 • 字串陣列可用另一方法表示 • String [] args • 字串陣列名稱不一定要為args

  22. Compiling & Executing a Java Program public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } …… …… …… javac java HelloWorld.java HelloWorld.class

  23. Module 2 Object-Oriented Programming

  24. Abstraction • 抽象化 • 將實際實作的細節隱藏在公開的介面之後 • 抽象化的應用 • 將重覆使用的運算,獨立成Function • 將行為及相關的屬性集合成物件 • 將多個物件集合成架構FrameWork,提供複雜的功能

  25. 類別 vs. 物件 • 物件是類別的一個實體 • 類別是同類型物件的共同藍圖 • Java programmer 設計類別及類別之間的互動關係. • Java 應用程式執行時,JVM 根據類別定義建立物件(系統中配置記憶體),並處理物件之間互動產生之的狀態變化(記憶體中的儲存值的改變)

  26. Object-Oriented 程式特性 • Encapsulation • Inheritance • Polymorphism

  27. 行為(方法) 身份確認 存款 提款 餘額查詢 狀態(屬性) 帳號 戶名 餘額 Encapsulation • 封裝 encapsulation • 保護類別中的資料,不讓資料被誤用或破壞 • 隱藏實作的細節 • 封裝的方法 • 更改屬性為private • 提供存取屬性的方法 • Accessor (getter & setter) • Setter提供保護資料的邏輯 • 欲存取此類別之資料,需使用類別所提供的方法來存取

  28. Encapsulation - continue public class MyDate { public int day; public int month; public int year; } public class MyDate { private int day; private int month; private int year; public void setDate(int day, int month, int year) { ………… ………… } public String getDate() { return day +”\”+ month +”\”+ year; } } setter method setXXX( ) getter method getXXX( )

  29. public class TestMyDate { public static void main(String args[]) { MyDate d = new MyDate(); d.day = 30; d.month = 2; d.year = 2003; System.out.println(day +”\”+ month + ”\”+ year); d.setDate(28,2 2003); System.out.println(“Date: “ + d.getDate()); } } public class MyDate { private int day; private int month; private int year; public void setDate(int day, int month, int year) { ……….. ………… } public String getDate() { return day +”\”+ month +”\”+ year; } } compile error! Encapsulation - continue

  30. Creating Constructors [modifiers] class <class_name> { [modifiers] constructor_name([arguments]) { code_blocks } } Arguments list Same as class_name Accessibility

  31. Constructors • 與類別名稱一樣 • 沒有回傳型態 • 自行建立後預設建構子即失效 • 可以多載(Overloading)

  32. Default Constructor public class People { private String name; private int age; public String show () { System.out.println(name + “ “ + age); } } javac People.java public class People { private String name; private int age; public People() {} public String show () { System.out.println(name + “ “ + age); } }

  33. Constructors overloading public class People { private String name; private int age; public People(String newName) { name = newName; age = 0; } public People(String newName, int newAge) { name = newName; age = newAge; } }

  34. 套件(package)的使用 • 目的 • 將不同的類別檔案,分門別類放在一起 • 使大型的軟體系統易於管理 • 使類別名稱不相衝突 • 提供package(default)的存取保護 • 實體型態 • 同電腦之檔案目錄系統

  35. UML Package 圖

  36. Shipping GUI reports Company.class domain Vechicle.class RiverBarge.class Truck.class 類別放入相關目錄

  37. Package陳述式 • Package 宣告 Package <package名稱>[.<subPackage名稱>]*; • 一個 Java 原始檔中只能有一個套件的宣告, • 如果檔案有套件宣告,一定要在第一行 • 沒有套件宣告的類別則屬於預設套件 (default package), 就是目前目錄 • Package 命名 com.company.package…. • 通常全為小寫字母

  38. Package下編譯與執行 • 切換至application根目錄 來 compile 較不會有問題(找不到 class的問題.) • 編譯 javac <package 路徑>\類別名稱.java • 執行 java <package 路徑>.<類別名稱>

  39. 使用Package成員 • Package下類別使用 • 引用同package之下的類別,可直接使用類別短名 • 引用不同package之下的類別,不可直接使用類別短名,需使用類別長名 • 類別的長名vs.短名 • 短名:類別名稱本身 • 長名:短名前面再加上其package名稱

  40. 使用其他Package成員 • 使用其他Package成員 • 以類別的長名存取 • 引入(import)package特定成員 • 引入(import)成員所屬package (import package…*)

  41. import 陳述式 • import 陳述式宣告 • 引入(import)package特定成員 import package名稱.類別名稱; • 引入(import)成員所屬package import package名稱.*; • 不包含subPackage中的成員 • 告訴compiler,可能的類別長名為何 • import並不會造成效能降低,但會使編譯時間變長

  42. import注意事項 • 預設自動import • java.lang.* • default package(目前工作目錄) • 避免名稱混淆 • 同一個短名,在classapth中可找到兩個不同的長名定義時,仍需用類別長名來存取

  43. Source File Layout [ <package_declaration>] [ <import_declaration> ] * <class__declaration> * • 宣告一定要依照上述的順序 • 一個Source file可以有多個class宣告,但只能有宣告為public,該public類別與source file同名

  44. Classpath設定 • 告訴電腦去哪裡找編譯或執行時所需要的類別 • 設定環境變數classpath classpath = .;d:\sample;c:\java; • 編譯及執行時期指定類別路徑 javac –classpath 類別路徑 檔案名稱 java –classpath(-cp) 類別路徑 類別名稱

  45. Module 3 Identifiers, Keywords, and Types

  46. Identifier • 下列四種字元組成 • Unicode letters A-Z, a-z, 中文, … • Underscore _ • Dollar sign $ • Digits 0,1,…9 (不能出現在起始字元) • 不可為keywords / Reserved words • 大小寫有別 Case sensitive

  47. Primitive Data Types

  48. Literals • A value: 出現在程式中的一個數值 • boolean • 只有 true 和 false • 整數 • 三種型式: 十, 八, 十六進位 • 兩種型態: int (預設) 與 long (字尾加上L) • 浮點數 • 兩種型態: float (字尾加上F)與double (預設, 字尾加上D) • 字元: 使用單引號 (‘) • 字串: 使用雙引號 (“)

  49. Escape Character

  50. Constructing & Initializing Objects public class MyDate { private int year = 2000; private int month = 1; private int day = 1; public MyDate(int d, int m, int y) { year = y; month = m; day = d; } } MyDate my_birth = new MyDate(22, 7, 1964); Stack Memory

More Related