於 2009 年 4 月併購 sun 之後,java...

8
目  錄 00 00 iii 二版序 Oracle 2009 4 月併購 Sun 之後,Java 認證考試內容將會大改版的傳 言一直未斷 。但 Oracle 2010 8 月在其官網上公布所有 Sun 時期的 Java 證考試題型、出題範圍、計分方式都保持不變,會改變的只是在 2010 9 1 日之後取得的證照,上面的認證授權公司將改為 Oracle。這項公布可說確定 了目前既有的 Java 認證考試內容將不會改變,依然照舊;簡單地說,像 SCJP 6.0SCWCD 5.0 等原來 Sun 時期就有的認證考試將維持原狀。至於以後若有 新版考試,其內容是否會有重大改變?那就要等之後 Oracle 的公布了 。 感謝許多老師與學生以及其他各界朋友對第一版的支持與鼓勵,為了讓這 本書能夠更好、更充實,所以作了一次改版,除了對第一版錯誤地方加以更 正、舊有資訊加以更新之外,另外加了 Eclipse 開發工具的介紹。第二版更新 的內容如下: h 「第 1 SCJP 認證考試介紹」:雖然原有的 Java 認證考試內容維持原狀, 但是考試報名方式、繳費方式與考試費用有所改變,因此將這些資訊加以 更新。 h 「第 2 Java 導論」:JDK 6.0 版下載部分已有改變,所以一併加以更新 。 h 新增「附錄 A 使用 Eclipse 開啟本書範例」:說明如何下載、安裝 Eclipse 開發工具,並利用該開發工具開啟本書的範例 。 h 對第一版錯誤地方加以更正 。 再度感謝碁峰資訊產品經理楊佳穎小姐及相關編輯團隊的積極協助,也希 望這本書能夠幫助更多人取得 SCJP 證照。 黃彬華

Upload: others

Post on 17-Jan-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 於 2009 年 4 月併購 Sun 之後,Java 認證考試內容將會大改版的傳epaper.gotop.com.tw/pdf/AER007331.pdf · 了目前既有的Java認證考試內容將不會改變,依然照舊;簡單地說,像SCJP

目  錄

0000

iii ░

二版序

Oracle於 2009年 4月併購 Sun之後,Java認證考試內容將會大改版的傳

言一直未斷。但 Oracle於 2010年 8月在其官網上公布所有 Sun時期的 Java認

證考試題型、出題範圍、計分方式都保持不變,會改變的只是在 2010年 9月

1日之後取得的證照,上面的認證授權公司將改為 Oracle。這項公布可說確定

了目前既有的 Java認證考試內容將不會改變,依然照舊;簡單地說,像 SCJP

6.0、SCWCD 5.0等原來 Sun時期就有的認證考試將維持原狀。至於以後若有

新版考試,其內容是否會有重大改變?那就要等之後 Oracle的公布了。

感謝許多老師與學生以及其他各界朋友對第一版的支持與鼓勵,為了讓這

本書能夠更好、更充實,所以作了一次改版,除了對第一版錯誤地方加以更

正、舊有資訊加以更新之外,另外加了 Eclipse開發工具的介紹。第二版更新

的內容如下:

hh 「第 1章 SCJP認證考試介紹」:雖然原有的 Java認證考試內容維持原狀,

但是考試報名方式、繳費方式與考試費用有所改變,因此將這些資訊加以

更新。

hh 「第 2章 Java導論」:JDK 6.0版下載部分已有改變,所以一併加以更新。

hh 新增「附錄 A 使用 Eclipse開啟本書範例」:說明如何下載、安裝 Eclipse

開發工具,並利用該開發工具開啟本書的範例。

hh 對第一版錯誤地方加以更正。

再度感謝碁峰資訊產品經理楊佳穎小姐及相關編輯團隊的積極協助,也希

望這本書能夠幫助更多人取得 SCJP證照。

黃彬華

Page 2: 於 2009 年 4 月併購 Sun 之後,Java 認證考試內容將會大改版的傳epaper.gotop.com.tw/pdf/AER007331.pdf · 了目前既有的Java認證考試內容將不會改變,依然照舊;簡單地說,像SCJP

Java 導論

2-1 傳統程式與 Java程式的差異

2-2 Java開發工具

2-3 Java檔案的編譯與執行

2-4 Java程式內容簡介

2-5 Java基本類型

2-6 基本類型的轉型

練習題

02

Page 3: 於 2009 年 4 月併購 Sun 之後,Java 認證考試內容將會大改版的傳epaper.gotop.com.tw/pdf/AER007331.pdf · 了目前既有的Java認證考試內容將不會改變,依然照舊;簡單地說,像SCJP

░ 2-2

SCJP 6.0SCJP 6.0認證教戰手冊認證教戰手冊

2-1 傳統程式與 Java程式的差異

人類如果要電腦幫忙做事,就必須將想要電腦做的事情撰寫成程式,

才能讓電腦執行。一般程式語言如 C/C++、Visual Basic等已經十分接

近人類的語言,但電腦的作業系統只能執行機械碼(Machine Code,

或稱作 Binary Code,由 0與 1組成),所以需要一種翻譯工具將寫好的

原始程式碼(Source Code)轉換成為機械碼;這種轉換過程稱為編譯

(Compile),而編譯的工具就稱為編譯器(Compiler)。如「圖 2-1」所

示,假設在Windows作業系統下,傳統 C++程式在編譯過程中會將原始

程式碼編譯成Windows作業系統可以執行的機械碼以方便執行;但是這

個機械碼不能直接拷貝到 Linux作業系統下執行,因為 Linux作業系統無

法解析該機械碼,所以傳統的程式語言沒有跨平台的功能。

程式設計師 C++原始程式碼 機械碼

C++編譯器Windows

Linux

圖 2-1 傳統程式編譯與執行示意圖

「圖 2-1」情形非常類似「圖 2-2」的故事情節:

有個中國人要跟日本人與泰國人做生意,他不懂日文,所以必須請個中 /

日翻譯員,將擬好的中文契約翻譯成日文契約,日本老闆才看得懂。即

使契約內容一樣,也不可以直接將日文契約轉寄給泰國老闆看,因為泰國

老闆看不懂日文契約。

Page 4: 於 2009 年 4 月併購 Sun 之後,Java 認證考試內容將會大改版的傳epaper.gotop.com.tw/pdf/AER007331.pdf · 了目前既有的Java認證考試內容將不會改變,依然照舊;簡單地說,像SCJP

多執行緒程式設計

13-1 多執行緒簡介

13-2 Java執行緒與 Thread類別

13-3 Runnable介面

13-4 執行緒的同步性與安全性

13-5 執行緒的互動處理

練習題

13

Page 5: 於 2009 年 4 月併購 Sun 之後,Java 認證考試內容將會大改版的傳epaper.gotop.com.tw/pdf/AER007331.pdf · 了目前既有的Java認證考試內容將不會改變,依然照舊;簡單地說,像SCJP

░ 13-2

SCJP 6.0SCJP 6.0認證教戰手冊認證教戰手冊

13-1 多執行緒簡介

所謂多工(Multi-tasking)就是同一時間能處理很多事情,要達到這個目

的,必須仰賴多人的幫忙。如果只有 1個人,那麼同一時間只能處理 1

件事情,即使要求同時做 2件事情,也一定是先做 1件事情,做了一小段

之後再做另一件事情,只能達到所謂的「分時多工」。但不論多少個人,

在開始工作前都必須先完成工作內容的指派。請參看「圖 13-1」。

人員 1 工作 1

工作清單

人員 2 工作 2

工作清單

圖 13-1 工作指派

如果希望電腦達到多工的效果,就必須開啟多條執行緒,因為每開 1條執

行緒,就是要求電腦做 1件事,同時開多條執行緒就是要求同時做多件

事,只不過要真正達到多工的效果,還必須有多顆 CPU;如果只有 1顆

CPU,也只能達到分時多工。在程式執行前,必須先完成每條執行緒工

作內容的指派(如「圖 13-2」),開始執行時作業系統會自動配置 CPU來

完成執行緒要執行的內容。不讓程式設計師指定由哪顆 CPU執行哪些程

序,是因為 CPU的時程規劃相當複雜,所以程式設計師只要單純叫電腦

去做哪些事情即可,作業系統會自動處理 CPU的調派工作。

Page 6: 於 2009 年 4 月併購 Sun 之後,Java 認證考試內容將會大改版的傳epaper.gotop.com.tw/pdf/AER007331.pdf · 了目前既有的Java認證考試內容將不會改變,依然照舊;簡單地說,像SCJP

░ 13-6

SCJP 6.0SCJP 6.0認證教戰手冊認證教戰手冊

public static void sleep(long millis)

讓當前執行緒暫時停止。

• millis-設定停止的時間,單位為千分之一秒。

例外事件:如果該執行緒已經中斷,就會產生 InterruptedException。

public void start()

啟動執行緒,並呼叫已改寫的 run()方法。

例外事件:如果該執行緒已經在執行,就會產生 IllegalThreadStateException。

public static void yield()

讓該執行緒暫停,先讓其他執行緒執行。

範 例 故 事 ThreadEx.java

Ron跟 Ken正在接受跑步測驗,總共要跑操場 10圈。但是 Ken的體力較

差,每跑 3圈就要休息一下。

範 例 ThreadEx.java

01. class Person extends Thread{

02. public Person(String name){super(name);}

03. public void run(){

04. String name =

05. Thread.currentThread().getName();

06. int priority =

07. Thread.currentThread().getPriority();

08. Thread.State state =

09. Thread.currentThread().getState();

10. System.out.println(name + "的優先序-” + priority +

11. "; 狀態-” + state);

12. for(int i=1; i<=10; i++){

13. System.out.println(name + "跑完第” + i + “圈”);

14. if(name.equals(“Ken”) && i%3 == 0){

15. System.out.println(name + "休息 1秒”);

16. try{Thread.sleep(1000);}

17. catch(InterruptedException e){

18. e.printStackTrace();

19. }

20. }

Page 7: 於 2009 年 4 月併購 Sun 之後,Java 認證考試內容將會大改版的傳epaper.gotop.com.tw/pdf/AER007331.pdf · 了目前既有的Java認證考試內容將不會改變,依然照舊;簡單地說,像SCJP

SCJP 6.0 完全擬真試題與解析

14

Page 8: 於 2009 年 4 月併購 Sun 之後,Java 認證考試內容將會大改版的傳epaper.gotop.com.tw/pdf/AER007331.pdf · 了目前既有的Java認證考試內容將不會改變,依然照舊;簡單地說,像SCJP

░ 14-2

SCJP 6.0SCJP 6.0認證教戰手冊認證教戰手冊

Given:35. String #name = "Jane Doe";36. int $age = 24;37. Double _height = 123.5;38. double ~temp = 37.5;

Which two statements are true? (Choose two.)

A. Line 35 will not compile.

B. Line 36 will not compile.

C. Line 37 will not compile.

D. Line 38 will not compile.

答 案: AD

參 考: 2-4 Java程式內容簡介

解 析: * 第 35行的「#」是符號,不可用作識別字。

* 第 38行的「~」是運算符號,不可用作識別字。

Given:01. public class TestString1{02. public static void main(String[] args){03. String str = "420";04. str += 42;05. System.out.print(str);06. }07. }

What is the output?

A. 42

B. 420

C. 462

D. 42042

E. Compilation fails.