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