課程講義

Download Report

Transcript 課程講義

第2章 Java導論
2-1 傳統程式與Java程式的差異
2-2 Java開發工具
2-3 Java檔案的編譯與執行
2-4 Java程式內容簡介
2-5 Java基本類型
2-6 基本類型的轉型
第2章 Java導論 - 2
2-1 傳統程式與Java程式的差異
程式語言已經十分接近人類的語言,但電腦的作業系統只能
執行機械碼(Machine Code,由0與1組成),所以需要一種
翻譯工具將原始程式碼(Source Code)轉換成為機械碼;
這種轉換過程稱為編譯(Compile),而編譯的工具就稱為
編譯器(Compiler)。但一般程式語言都不具有跨平台能力,
如下圖所示。
第2章 Java導論 - 3
上述一般程式編譯執行的情形非常類似下圖契約翻譯的情形:
第2章 Java導論 - 4
為了達到跨平台的目的, Java編譯器會將原始程式碼(Java檔)
編譯成Bytecode(Class檔,是一種中介文件),Java還多了一
個JVM(Java Virtual Machine),不同平台的JVM可以將Class
檔轉譯成適合該平台執行的機械碼並且執行。參看下圖。
第2章 Java導論 - 5
上述Java程式編譯執行的情形非常類似下圖契約翻譯的情形:
第2章 Java導論 - 6
2-2 Java開發工具
JDK(Java Development Kit,Java開發工具)可分成3大部分:
編譯器:將Java檔編譯成Class檔。
類別庫:Java提供功能強大的類別庫,方便程式設計師使用。
JVM:將Class檔轉譯成適合該平台的機械碼並且執行,如下圖所示。
第2章 Java導論 - 7
如果只是一般使用者要執行Java程式,僅需安裝JRE(Java
Runtime Environment)即可。JRE只有JVM與Java類別庫而
少了編譯器的相關功能。
下載JDK及其說明文件(Documentation)或JRE,可連線到
「http://java.sun.com」,並依照下列步驟下載:
步驟1:連線到Java網站首頁
第2章 Java導論 - 8
步驟2:選取JDK 6.0版
第2章 Java導論 - 9
步驟3:選取適用平台
第2章 Java導論 - 10
步驟4:選取下載檔案
第2章 Java導論 - 11
Sun公司依照功能的不同,將Java分成3種版本:
Java SE(Standard Edition)就是Java標準版,主要用來開發
一般單機應用程式。
Java EE(Enterprise Edition)就是Java企業版,主要用來開發
伺服端程式。
Java ME(Micro Edition)就是Java微型版,主要用來開發手機
、PDA上的應用程式。
第2章 Java導論 - 12
2-3 Java檔案的編譯與執行
以Windows作業系統為例:
JDK安裝的預設路徑應為「C:\Program Files\Java\jdk1.6.0」。
「C:\Program Files\Java\jdk1.6.0\bin」目錄內有
「javac.exe」、「java.exe」2個重要的檔案,分別代表編譯和
執行功能。
先設定命令列的環境變數-Path,這樣無論在哪個目錄下都可以
順利編譯和執行Java檔案。
第2章 Java導論 - 13
環境變數Path的設定步驟如下:
步驟1:控制台視窗/系統圖示
第2章 Java導論 - 14
步驟2:系統內容視窗/環境變數
第2章 Java導論 - 15
步驟3:環境變數視窗/Path系統變數/輸入「javac.exe」所在路徑
第2章 Java導論 - 16
假設有1個Java檔,檔名為「JavaIntro.java」,所在路徑為
「C:\Example\ch01」:
編譯:
C:\Example\ch01>javac JavaIntro.java
編譯成功後會產生「JavaIntro.class」檔。
執行:
C:\Example\ch01>java JavaIntro
要執行的Class檔,不需要加副檔名。
第2章 Java導論 - 17
2-4 Java程式內容簡介
Java程式內容大致上可分成下列5個部分:
識別字(Identifier)-由程式設計師自訂的名稱。可以用在
類別、方法、變數等名稱上。
值(Literal)-有數字值與文字值2種;例如:「123」、
「”Hello”」。
符號(Symbol)-最常見的就是運算符號。符號對編譯器而
言有特殊意義,所以不可當作識別字。
關鍵字(Keyword)-關鍵字對編譯器而言也具有特殊意義,
所以也不可以當作識別字。
註解:嚴格說來,註解不是程式碼,「//」或「/* */」都是註
解的符號。
第2章 Java導論 - 18
輸出結果
聖母峰有多高?
8848公尺。
範例說明
• 第1~4行、第6行:註解。
• 第5、12行:成對的大括號所包含的範圍被稱作程式區塊(Block)。
• 第7行:main方法是程式的進入點。
• 第8行:以「;」(分號)結尾的即是敘述句(Statement)。
• 第8~10行:「System.out.println()」會將小括號內的值輸出到螢幕上。println()將內容輸出
後會換行;print()則不會換行。
第2章 Java導論 - 19
2-5 Java基本類型
想像自己是加油站工讀生,假設汽油每公升a元,幫一台車加
了b公升的汽油,總共要跟客人收a×b元。你會先將要計算的數
字a與b記在大腦儲存區內,然後才會開始計算,由此可知「要
計算前必先記憶」。參看下圖。
汽油每公升35元,
加了20公升:
35×20 = 700
第2章 Java導論 - 20
電腦同樣會把要計算的值先存入記憶體內,因為a與b的值是變動的,
所以程式設計師必須必須透過資料類型來告訴電腦所需的記憶體空
間,這個動作稱之為宣告(Declare)或稱作定義(Define);如果
再告訴電腦a的值是35,就會將35存入a變數所代表的記憶體空間中,
而完成了值的指派(Assign)。參看下圖。
第2章 Java導論 - 21
Java基本類型共分成整數(Integral)、浮點數(Float Point)、布
林(Boolean)與字元(Character)等4種類型:
整數類型
整數類型又可分成4小類,如下表所示:
類型
佔記憶體空間
範圍
byte
1 byte
-27 ~ 27-1
short
2 bytes
-215 ~ 215-1
int
4 bytes
-231 ~ 231-1
long
8 bytes
-263 ~ 263-1
第2章 Java導論 - 22
以byte類型來說(參看下圖),佔記憶體空間1 byte = 8 bits,每個
bit空間都有0與1兩種變化,所以共有28 = 256種變化,正負數各有
27個;負數可能的值介於「-27 ~ -1」,正數則是介於「0 ~ 27-1」
(因為0佔了一個數,所以27要減1)。
第2章 Java導論 - 23
輸出結果
23
1
2
3
4
141
範例說明
• 第3~6行:宣告整數類型的變數。
• 第7行:整數冠上0x代表是16進位整數,所以8d是16進位的數字。
• 第8行:編譯器會將23視為int類型。
第2章 Java導論 - 24
浮點數類型
浮點數類型其實指的就是小數,可分成2小類,如下表所示。
double是預設的浮點數類型。
類型
佔記憶體空間 可儲存的小數位數
範圍
float
4 bytes
7
-3.4*1038 ~ 3.4*1038
double
8 bytes
15
-1.8*10308 ~ 1.8*10308
第2章 Java導論 - 25
輸出結果
4.0
2.0
123456789
1.23456792E8
1.23456789E8
範例說明
• 第3行:f大小寫都可以;如果移除f則編譯器會將2.0當作double類型。
• 第4行:int類型可以精準儲存整數值。
• 第5行:浮點數都會將值以科學記號方式儲存,所以「123456789」會先被轉成
「1.23456789E8」;float類型只能儲存7位小數,所以第8位小數「9」會因四捨五入而進位,
所以得到值為「1.2345679E8」,但最後輸出結果卻為「1.23456792E8」,是因為第8位小數
產生誤差。
• 第6行:值「123456789」沒有超過double類型所能儲存的15位小數,所以輸出不會產生誤差。
第2章 Java導論 - 26
布林類型
布林類型只有true(成立)與false(不成立)這2種變
化。請參看下表:
類型
佔記憶體空間
範圍
boolean
1 byte
true或false
第2章 Java導論 - 27
字元類型
字元類型只能儲存1個字,而且必須以單引號(’’)
框住。Java的字元類型屬於Unicode字元。請參看下表:
類型 佔記憶體空間
char
2 bytes
範圍
‘\u0000’ ~
‘\uffff’
字串(String)類型
處理文字時,不太可能只處理一個字元,所以需要使用
String(字串)類型,並使用「" "」(雙引號)框住。
第2章 Java導論 - 28
輸出結果
J
考
74
32771
證
SCJP 6
"SCJP 6"
範例說明
• 第5~6行:會將「'J'」、「'考'」轉成對應的整數值。
• 第7行:透過16進位的數字代碼取得Unicode字元。
• 第9行:使用「\」將第2個、第3個「"」的標示文字功能解除,使其成為單純文字。
第2章 Java導論 - 29
Java跳脫字元(Escape Character):
‘\’’
取消單引號原來功能,成為單純文字
‘\"’
取消雙引號原來功能,成為單純文字
‘\\’
取消反斜線原來功能,成為單純文字
‘\n’
換行
‘\t’
相當於按tab鍵
‘\b’
相當於按倒退鍵
‘\r’
相當於按return鍵
‘\f’
換頁
第2章 Java導論 - 30
2-6 基本類型的轉型
自動轉型也稱作隱含轉型(Implicit casting),通常
發生在資料類型範圍較小者轉成較大者。
強迫轉型也稱作明確轉型(Explicit casting),通常
發生在資料類型範圍較大者轉成較小者。
自動轉型(小到大):
int → long → float → double
強迫轉型(大到小):
double → float → long → int
第2章 Java導論 - 31
輸出結果
12.1
12
範例說明
• 第5行:i會自動轉型成double類型。
• 第6行:「(int)」代表要強迫轉型成int類型。