SCJP ch01
Upcoming SlideShare
Loading in...5
×
 

SCJP ch01

on

  • 118 views

 

Statistics

Views

Total Views
118
Views on SlideShare
116
Embed Views
2

Actions

Likes
0
Downloads
0
Comments
0

1 Embed 2

http://120.106.204.138 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

SCJP ch01 SCJP ch01 Presentation Transcript

  • 第 1 章 Java 與 SCJP 簡介 本投影片(下稱教用資源)僅授權給採用教用資源相關之旗標書籍為教科書之授課老師(下稱老師)專用,老 師為教學使用之目的,得摘錄、編輯、重製教用資源(但使用量不得超過各該教用資源內容之 80% )以製作為 輔助教學之教學投影片,並於授課時搭配旗標書籍公開播放,但不得為網際網路公開傳輸之遠距教學、網路教 學等之使用;除此之外,老師不得再授權予任何第三人使用,並不得將依此授權所製作之教學投影片之相關著 作物移作他用。 著作權所有 © 旗標出版股份有限公司
  • 學習目標  認識程式語言  Java 簡介  SCJP 認證簡介
  • 前言  在這一章中 , 將為大家介紹甚麼是程式語言?  瞭解程式語言所扮演的角色 , 並且簡單說明程式語言 的演進 , 接著再由 Java 程式語言的歷史 , 一步步的 進入 Java 程式設計的領域。
  • 1-1 甚麼是程式語言?  電腦就像是一位協助我們完成工作的朋友 , 當我們與 朋友一起工作時 , 會使用大家都可以聽懂的語言相互 溝通 , 以便讓對方瞭解我們希望他做甚麼?  舉例來說 , 大家都會說國語 , 因此在一般的情況下 , 只要以國語溝通 , 通常都可以正確的完成工作。  不過想像一下 , 如果今天到了一個客家村落 , 遇到了 一位老婆婆 , 她可能只聽得懂客家語 , 想要向她問路 , 國語可能就行不通了。
  • 甚麼是程式語言?  這個情況在面對電腦的時候也是一樣 , 雖然科幻片中 聽得懂人說話的電腦不計其數 , 但到目前為止 , 這都 還是人類的夢想而已。  要想讓電腦幫我們工作 , 還是得說電腦懂得的語言 , 這種可以讓我們與電腦溝通的語言 , 就稱之為電腦語 言 (Computer Language ), 或者是程式語言 (Programming Language) 。
  • 甚麼是程式語言?  簡單地來說 , 當我們要求電腦為我們工作時 , 可以 分為幾個步驟: 1. 先分析所要解決的問題。 2. 找出解決問題的步驟 , 這些步驟稱為解決此問題的演 算法 (Algorithm) 。 3. 使用程式語言表達出前述解決問題的步驟 , 這個動作 就稱為撰寫程式 (Writing Program), 或者是設計程 式 (Designing Program) 。
  • 甚麼是程式語言? 4. 要求電腦依據上一步驟所寫好的程式執行 , 看看是否 能夠正確解決問題。這個動作就稱為測試 (Testing) 程式。 5. 如果執行的結果有問題 , 就再回到第 3 步 , 檢查所 撰寫的程式是否有錯誤 , 並加以修正 , 一直到程式的 執行結果完全符合預期為止。這個動作稱為除錯 (Debug) 。
  • 甚麼是程式語言?
  • 甚麼是程式語言?  透過以上的步驟 , 就可以利用電腦解決許多問題了。  不過就如同人類語言的多樣性 , 程式語言也有許多不 同的種類 , 以下就程式語言本身的特質以及執行的方 式 , 再做進一步的解說。
  • 演算法的定義  嚴格來說 , 一個演算法是要符合以下幾項規定: 1. 要明確的說 明輸入的資料:亦即依照這個演算法解決 問題時 , 要先具備的條件是甚麼。 2. 要明確的說 明產 生的結果:在特定的輸入資料下 , 這個演算法執行之後 , 會得到甚麼結果。只要輸入的 資料相同 , 這個演算法就應該要得到一樣的結果。
  • 演算法的定義 3. 要能夠 在有限的步 驟內 完成:這一點是很重要的 , 否 則無法預估完成的時間。舉例來說 , 如果你立志要到 美國旅行 , 那麼達成這個目的的方法就不能是『假如 心情好 , 就存 10 元』 , 這不能稱為演算法 , 因為你 無法預估甚麼時候會完成;反之 , 如果改成『每天存 10 元』 , 那麼只要知道所需的總旅費 , 就可以知道 這個方法甚麼時候可以達成 , 這才能稱為演算法。 4. 要明確的說明每一個執行步驟的動作 , 而不能讓人不 知道該如何進行。 5. 要能證明可以解決問題。
  • 演算法的定義  一個演算法基本上要能夠用紙筆就可以模擬出執行的 結果 , 而不一定要使用電腦或是其他工具 , 只是對於 比較複雜的演算法 , 我們不容易演練其執行過程而已 。
  • 1-1-1 程式語言的演進與分類  電腦的程式語言也和人類的語言一樣 , 有許多種不同 的類型 , 在這一小節中 , 會以程式語言的本質 , 以及 語言本身的差異 , 來區分各種不同的程式語言。
  • 機器語言 (Machine Language)  對於電腦來說 , 它真正所懂得的語言只有一種 , 就是 機器語言。  所謂的機器語言 , 其實就是以特定的數字來表示電腦 所能進行的各個動作 , 這些數字就稱為機器碼 (Machine Code) 。  舉例來說 , 如果把電腦比喻為機器人 , 而 0 代表要 機器人往前走一步、 1 代表往後退一步、 2 代表往 左轉 90 度 , 而 3 代表往右轉 90 度 , 那麼當你希 望機器人往前走三步、再往右走三步時 , 就必須下達 『 0003000 』的指令 , 當電腦看到這一串數字後 , 就會依據每個數字所代表的意義動作。
  • 機器語言 (Machine Language)
  • 機器語言 (Machine Language)  任何一個人都可以看得出來 , 這種以數字表達的語言 並不適合人閱讀 , 除非我們是在玩團康遊戲 , 否則大 可不必考驗自己的記憶力。  除此之外 , 使用不同微處理器的電腦 , 其機器語言亦 不相同 , 換了另外一種電腦 , 0 可能代表的是往後走 一步 , 一樣下達 0003000, 到達的地方就天差地遠了 。  因此 , 除了早期電腦的時代 , 大家很快就發現要用這 種方式撰寫程式 , 實在太難了。
  • 組合語言 (Assembly)  為了解決機器語言的難題 , 大家就想到了用一些符號 來替代數字 , 以方便人們辨識各個指令。  舉例來說 , 如果以 forward 代替原本的 0 、 backward 代替 1 、 left 代替 2, 而用 right 代替 3, 那麼同樣要往前走三步、再往右走三步的程式 , 寫起來就變成這樣:
  • 組合語言 (Assembly)  像是這樣使用文字符號替代機器碼撰寫程式的語言 , 就稱為組合語言。  這種寫法絕對要比原本的 0003000 要容易懂得多 , 不過這樣一來 , 雖然人們看得懂 , 但是電腦卻看不懂 , 而必須透過一個翻譯的動作 , 將這個用組合語言寫 成的程式轉換成電腦看得懂的機器語言 , 負責這個翻 譯動作的就是組譯器 (Assembler) 。
  • 高階語言  不論是機器語言還是組合語言 , 對於程式的描述都是 以電腦所能進行的最基本動作為步驟 , 因此這兩種語 言被稱為低階語言 ( Low-Level Language) 。  換言之 , 本來是希望機器人向前走三步 , 然後向右走 三步 , 但是因為電腦所能進行的基本動作的限制 , 使 得我們所寫出來的程式必須以 『向前走一步、向前 走一步、向前走一步、向右轉 9 0 度、向前走一步 、向前走一步、向前走一步』 這樣繁瑣的方式一步 步描述實際進行的動作 , 寫起程式來其實並不便利。
  • 高階語言  為了解決這樣的問題 , 因此就有人設計新的語言 , 用 比較接近人類思考的方式來撰寫程式。  這種新的程式語言就稱為高階語言 (High-Level Language), 其中比較流行的有 C 、 Pascal 、 Basic 等等 , 使用這種語言 , 寫出來 的程式就會像是:  不但比較容易理解 , 也不會像是低階語言所寫出來的 程式那樣繁瑣。
  • 高階語言  不過電腦並無法看懂這樣的程式 , 和組合語言一樣需 要一個轉譯的動作 , 將使用高階語言所撰寫的程式轉 換成電腦所能看懂的機器語言 , 然後才能依此執行。 這個轉換的動作就是由各種程式語言的編譯器 (Compiler ) 所進行。
  • 物件導向程式語言  隨著軟體技術的不斷演進 , 程式語言又從高階語言改 良 , 而發展出物件導向程式語言 (Object-Oriented Language), 比較著名的有 Smalltalk 、 C+ + 、 C# 、以及本書的主題 Java 。  在後續的章節中 , 大家將可以看到物件導向程式語言 的特性 , 因此在這一節中 , 就不浪費篇幅撰述。
  • 1-1-2 編譯式與直譯式的程式語言  除了以程式語言本身的特質來分類以外 , 也可以依據 程式執行的方式來區別。  一般來說 , 依執行方式程式語言分成編譯式語言與直 譯式語言兩種。
  • 編譯式的程式語言  所謂編譯式的程式語言 , 其執行的方式是先將整個程 式從頭到尾讀完 , 翻譯成機器碼後 , 電腦才開始依據 程式中所描述的動作一一執行。  這就好像是一本翻譯書 , 是先將原文書整個從頭到尾 先翻譯好 , 然後才拿給讀者閱讀。  這種作法的好處是 , 只要書已經翻譯好 , 那麼往後不 論甚麼時候需要閱讀 , 都不需要再重新翻譯 , 就可以 直接閱讀翻譯好的版本。  不過相對來說 , 在第一次想要閱讀之前 , 就必須先花 時間等待譯者翻譯完畢才行。
  • 編譯式的程式語言  對應到電腦實際的運作方式 , 編譯式的程式語言執行 的方式是先使用該語言的編譯器 (Compiler) 將撰寫 好的原始程式轉譯成為機器碼 , 然後再執行這份機器 碼。  以後每次要執行同一個程式時 , 就只需要執行這份轉 譯好的機器碼 , 而不需要花費時間重複再做轉譯的動 作。
  • 編譯式的程式語言  不過由於每種電腦的機器語言並不相同 , 比如說我們 常用的個人電腦 (PC) 和 IBM 大型主機的機器語言 就不相同 , 因此 , 同一個程式如果要在不同的機器上 執行 , 就必須使用專為該種電腦所設計的編譯器 , 轉 譯出符合該電腦的機器碼才行。
  • 直譯式的程式語言  直譯式的程式語言剛好和編譯式的程式語言相反 , 並 不先將整個程式讀完 , 而是每讀取程式中所描述的一 個動作 , 電腦隨即執行相對應的動作 , 這樣邊讀程式 、邊做動作。  這就好像是參加國際會議時的現場口譯一樣 , 主講者 邊講 , 口譯者便即時翻譯出來給大家聽。
  • 直譯式的程式語言  這種作法的好處是 , 只要主講者講完第一句話 , 口譯 者便開始翻譯 , 而不需要等待主講者整篇發言完畢。  相對的 , 由於口譯者即時翻譯完就結束了 , 因此如果 需要重新聽一遍 , 就只好從頭再請口譯者翻譯一遍了 。  對應到電腦實際的運作方式 , 直譯式的程式語言就是 透過所謂的解譯器 (Interpreter ), 每閱讀完程式中所 描述的一部份 , 便立即要求電腦進行對應的動作 , 一 直到整個程式執行完畢為止。
  • 直譯式的程式語言  由於沒有儲存轉譯的結果 , 因此往後每次要再執行相 同的程式時 , 都必須要再花費時間透過解譯器重新轉 譯。  相對的 , 直譯式的好處是程式寫完立即就可以開始執 行 , 而不需等待轉譯。
  • 程式語言種類與執行方式的關係  大部分的程式語言 , 都有其固有的執行方式。比如說 , C 語言與 Pascal 一般都是編譯式 , 而 Basic 一 般則是直譯式。  不過這並不是絕對 , 也有某些軟體公司為 C 語言做 出直譯式的解譯器;相同的 , 也有軟體公司為 Basic 語言做出編譯器。  不論是編譯式或是直譯式 , 兩種方法各有巧妙 , 而以 目前較為流行的程式語言來說 , 兩種方式都各有擅場。 在下一節中 , 我們還會看到 , Java 可以算是混合的 執行方式 , 不但具有編譯式的特質 , 也可以算是直譯 式的程式語言。
  • 1-2 Java 程式語言簡介  Java 程式語言的演進 , 橫生趣味 , 頗富傳奇 , 在這 一節中 , 我們會針對 Java 演進的歷史 , 以及 Java 程式語言的特色做說明 , 讓大家能在開始動手寫程式 之前 , 對 Java 程式語言有基本的認識。
  • 1-2-1 Java 程式語言的演進  Java 程式語言最早可追溯到 1990 年昇陽公司 (Sun Microsystems) 為資訊家電 (Information Appliance) 所組成的 『 Green 』 小組。  這個小組在 1992 年的時候開發了一個稱為 『 Star Seven (*7) 』 的小電腦 ( 有點像是今日流行的 PDA) , Java 就是當時用來在這台小電腦上執行的程式語言 。
  • Java 程式語言的演進  不過當時 Java 並不叫做 Java, 而是稱為 Oak, 主 因是 Green 小組成員 James Gosling 的辦公室窗 外正好有一棵橡樹 , 因此取名為 Oak 。  但因為 Oak 已經被其他公司註冊為商標 , 因此小組 成員才將這個新的程式語言以平日工作時不離手的咖 啡名稱命名 , Java 於焉誕生。
  • Java 程式語言的演進  在 1995 年 Java 程式語言正式公開時 , 主要是用 來撰寫在網頁上執行的小程式 , 稱為 『 Java Applet 』 , 以便提供網頁與使用者互動的功能。  隨後在昇陽公司長期規劃之下 , Java 程式語言不但 成為軟體開發的主流之一 , 而且功能越加完善 , 涵蓋 了一般應用軟體到網際網路應用程式、電子商務 , 無 一不是 Java 可以發揮長處的場合。
  • 1-2-2 Java 程式語言的特色  Java 程式語言之所以能夠風行全球 , 成為許多軟體 開發人員的最愛 , 主要是因為它擁有幾項特點 , 使得 軟體開發人員在選擇程式語言時 , 能夠脫穎而出。
  • 簡單  程式語言隨著年代的演進 , 功能雖然越來越強 , 但是 語言本身也越來越繁複 , 對於軟體開發人員來說 , 不 但整個學習與熟練的時間變長 , 程式的除錯也越來越 困難。  也正因為如此 , Green 小組便捨棄了早期採用的 C+ +, 而自行發明了 Java, 就是將程式語言最精髓的部 分萃取出來 , 以降低軟體開發人員的負擔。
  • 跨平台 (Cross-Platform)  如同上一節所提到 , 直譯式的語言雖然方便 , 但每次 執行都必須重新轉譯 , 對於執行的效率有一定的影響 。  編譯式的語言雖然可以重複執行轉譯完的成果 , 但因 為不同電腦的機器語言有所差異 , 同樣的程式到了不 同的電腦上 , 還是得重新編譯才能執行。
  • 跨平台 (Cross-Platform)  為了解決以上的問題 , Java 程式語言採取了混合式 的作法。  首先 , Java 語言設計了一個假的電腦 , 稱為 Java 虛 擬機器 (Java Virtual Machine), 寫好的 Java 程 式就在這個假的電腦上執行。  換言之 , Java 雖然採取編譯式的方式 , 但卻是將 Java 程式轉譯成 Java 虛擬機器的機器碼 ( 在 Java 中稱為 Byte Code) , 而不是直接轉譯成真正 電腦的機器碼;要執行程式時 , 再由 Java 虛擬機器 以直譯的方式 , 將 Byte Code 轉譯成機器碼讓真正
  • 跨平台 (Cross-Platform)  透過這樣的方式 , 只要在不同種類的電腦上都先安裝 其適用的 Java 虛擬機器 , 那麼 Java 程式不需重 新編譯就可以直接在各類型的電腦上執行。  由於有這樣的特點 , 因此 Java 程式語言在一開始就 打出 『 Write once, run everywhere 』 的口號。
  • 網路功能 (Networking)  由於 Java 程式語言一開始的設計就已經考慮到了網 路 , 因此隨著網際網路日益盛行 , 對於開發網路應用 軟體特別便利的 Java, 自然成為開發人員優先考量 的選擇了。
  • 例外處理 (Exception Handling)  天下事未必都能盡如人意 , 程式執行的時候也有許多 出人意料的狀況 , 比如說網路突然斷線、硬碟空間不 足、所要開啟的檔案被其他人刪除等等。  軟體開發人員往往必須使用複雜的邏輯與程式碼來處 理這些狀況 , 而 Java 程式語言採集 C++ 程式語言 的例外處理方式 , 去蕪存菁後 , 提供給軟體開發人員 一個簡單而又功能完善的架構 , 可以妥善處理種種的 例外狀況。
  • 標準萬國碼 (Unicode)  Java 程式語言內部採用 Unicode 來處理文字 , 這 也代表著不論你是哪一個國家或地區的開發人員 , 都 不必擔心 Java 不支援你所使用的語言 , 省去了軟體 開發人員必須處理當地語言的煩惱。
  • 多執行緒 (Multithreading)  Java 程式語言擁有多執行緒的功能 , 使得多段程式 碼可以近似同時的方式執行 , 更有效率的利用電腦的 資源 , 也使得軟體開發人員在撰寫程式時 , 可以更方 便的解決問題。
  • 資源回收系統 (Garbage Collection)  由於 Java 虛擬機器會自動管理記憶體的使用。  因此 , 軟體開發人員再也不必擔心自己配置的記憶體 沒有歸還 , 導致記憶體不敷使用 , 或者是將資料寫入 到不正確的地方等等繁瑣的問題 , 讓軟體開發人員可 以將心力專注於程式的邏輯 , 而不是一些旁枝末節上 。
  • 物件導向  Java 在一開始的設計上就是以物件導向為核心 , 達 到程式碼可重用性 , 並可搭配相關軟體開發工具。
  • 開發工具隨處可得  基本的 Java 開發工具都是免費的 , 只要上網 , 就可 以下載最新版本的開發工具 , 而不需要先耗費鉅資購 買產品。
  • Java 程式語言的特色  由於以上這些特性 , 使得 Java 演化至今日 , 可以說 是已經開花結果 , 不但在各種應用場合中發揮功用 , 也使得 Java 幾乎成為昇陽公司的代名詞了。
  • 1-2-3 Java 平台簡介  在 Java 中 , 我們將可以執行 Java 程式的環境稱 為 Java 平台 (Java Platform), 其中 , 根據不同環 境的特性 , 又可以區分為三種 Java 平台 , 分述如下 : ▪ Java SE (Java Standard Edition) :這是一般應用的 執行環境 , 像是常見的個人電腦上所提供的 Java 執 行環境就屬於這一種。如果沒有特別區分 , 那麼一般 所提的 Java 平台也多是指此 , 而這個平台也是本書 所介紹的主角。
  • Java 平台簡介 ▪ Java ME (Java Micro Edition) :泛指消費性裝置上的 Java 執行環境 , 像是手機、 PDA 等等 , 就屬於這一 類。由於此類裝置的限制 , 因此 Java ME 提供的能 力比較簡化。 ▪ Java EE (Java Enterprise Edition) :這是為了商業運 用所建構的平台 , 提供大規模運算所需的能力。
  • Java 平台簡介  每一種平台皆對應有其開發套件 , 例如 Java SE 的 開發套件稱為 Java SE Development Kit ( 簡稱 JDK), 只要下載這個套件 , 就可以立即開發 Java 程 式。
  • 1-3 SCJP 認證簡介  Java 的認證中最基礎的就是 SCJP (Sun Certified Java Programmer ) 認證 , 這項認證主要是測試受試 者對於 Java 程式語言的熟練度以及理解程度。  不論是要繼續取得 SCJD (Sun Certified Java Developer), 或是想要朝企業層級取得 J2EE 平台認 證 , 都必須先通過 SCJP 認證。  若要查詢 Java 的各種認證資訊 , 可瀏覽 Sun 教育 訓練中心網站 (https://www.suntrainingcatalogue.com, 注意 http 之後要加 s ) , 然後點選 Chinese/Taiwan 連結 , 再
  • SCJP 認證簡介
  • SCJP 認證簡介
  • SCJP 認證簡介 ▪ 昇陽公司於 2005 推出一個最 『基層』 的 SCJA (Sun Certified Java Associate), 不過其考試範圍涵蓋 企業、網路應用等範圍 , 且對於報考更高層的認證考 試而言 , 仍只要求應試者需先取得 SCJP 認證 , 而沒 有任何考試是以通過 SCJA 為前題。因此對想按步就 班 , 逐步取得 Java 各級認證者 , 只需以 SCJP 為 基礎即可 , 可不必考慮 SCJA 。
  • SCJP 認證簡介  SCJP 各種考試的 JDK 適用版本、題數、合格條件 等資訊 , 如下表所示 ( 資格欄為升級者 , 表示必須已 取得 SCJP 任何版本的認證 , 才能參加考試 ) : ▪ 目前認證考試的費用為新台幣 6,600 元 , 若為升級考 試則為 5,000 元。台灣地區的考生可選擇中文試題。
  • SCJP 認證簡介  對本書大多數的讀者來說 , 應該都是 Java 的初學者 , 建議可以直接選擇報考 JDK 6 的考試。如果您曾 經取得之前版本的認證 , 當然也可以報考升級考試 , 價格也較便宜。  複選題的部份 , 就是一般常見的選擇題 , 有些題目只 有單一答案 , 有些則需選取多個答案 ( 若為複選在題 目中會有提示 ) 。  拖放題有點類似『填充題 + 連連看』 , 就是將答案 拉曳到正確的空格中 , 每一題通常會有多個空格 , 您 必須由答案區中拖曳正確的答案來放入空格內。
  • 考試範圍  由於 SCJP 所要測驗的是對於 Java 程式語言的熟 練程度 , 因此主要的出題範圍都是 Java 程式語言基 礎的部分 , 以本書為例 , 除了附錄以外 , 第 1~18 章都是 SCJP 的出題範圍。 ▪ 有關考試的詳細範圍 , 可以在前面的網頁中點選相關 考試項目 , 即可取得詳細的考試內容說明。
  • 如何報考  要報考 Java 認證 , 可以向昇陽公司授權的教育訓練 中心購買認證卷 , 您可在下列網址查看方便連絡的授 權訓練中心 , 然後至各訓練中心直接購買 , 或在該網 頁中下載認證券訂購單 , 以傳真的方式訂購: https://www.suntrainingcatalogue.com/eduserv/client/viewProm.do?pr_id= 2444&1=2H_TW ( 注意 h t t p 之後要加 s )
  • 如何報考
  • 如何報考  購得認證卷後 , 即可至 Sun 授權的 Prometric 認證 中心網站線上報名 ( 詳見上述網頁說明 ), 並預約考 試時間及地點 , 等收到了考試確認書後即可參加考試 。
  • 1. Which are included in Java platform? (Choose al l that apply.) A. Java EE. B. Java WE. C. Java SE. D. Java DE. E. Java ME.
  • 2. Which are the chara cters of Java te chnology? (Choose al l that apply.) A. Procedure-Oriented Language. B. Garbage Collection. C. Exception Handling D. Cross Platform E. Doublethreading
  • 3. Please drag and drop the appropriate Words into the following empty boxes: In the Java programming language, all source code is first written in plain text files. Those source files are then Place here into Place here — the machine language of the Place here . The javalauncher tool then runs your application with an instance of the Java Virtual Machine. Words: machinecodes bytecodes interpreted compiled Java VM Computer