一、Java 的程式模組
1、Java 中存在 2 種模組:
(1).方法 (method)
(2).類別 (class)
2、Java API (Application Programming Interface)
(1).又稱 Java 應用程式介面
(2).包含許多預先定義的方法及類別
(3).相關的類別都被預先包裏 (prepackaged) 在一起
(4).包括數學計算、字串/字元、輸入/輸出、資料庫、網路等方法
3、方法 (method):
(1).在別的語言裡又稱函式 (functions) 或程序 (procedures)
(2).可將工作分為各個獨立單位,以便程式模組化
4、利用方法將程式模組化的動機:
(1).由簡單的片段建立程式,達到程式開發的有效管理。
(2).軟體重複使用性 (software reusability)
例如:使用定義好的 Scanner 類別讀取輸入的資料
(3).避免重複撰寫程式碼
二、static 方法
1、static 方法 (method):
(1).又稱類別方法 (class method)
(2).不需依靠任何物件來進行呼叫
(3).宣告方法:
static 回傳型別 方法名稱(引數列){…}
(4).呼叫方式:
類別名稱.方法名稱(引數列)
(5).Math 類別下的所有方法都是 static 方法
例如:Math.sqrt、Math.log、Math.pow、…
2、static 屬性成員 (attribute member):
(1).該類別的所有物件共享 1 個 static 屬性成員
(2).宣告方法:static 變數型別 變數名稱;
(3).呼叫方法:類別名稱.變數名稱
3、常數 (constant)
(1).使用關鍵字 final
(2).初始化後不得修改
4、Math 類別提供的 static 常數:
Math.PI、Math.E
三、main 方法
1、宣告 main 方法為 static,使 JVM 不必產生這個類別的實體就可以呼叫 main 方法。
2、任何類別都可以包含 1 個 main 方法:
(1).main 方法通常宣告如下:
public static
void main(String args[])
(2).執行時要指定類別的名稱當作 java 指令的引數
java 類別名稱 引數1 引數2 …
(3).JVM 載入指定類別,並呼叫其 main 方法,將後續的引數內容保存在 String
陣列 args 裡
四、宣告包含多項參數的方法
1、利用一組以逗號隔開的參數列來宣告多個參數
(1).呼叫方法時所傳送的參數列,必須依照宣告時的順序、型別來排列。
五、方法:
1、有 3 種呼叫方式:
(1).利用方法的名稱呼叫,呼叫相同類別的其他方法
例如:methodName()
(2).利用物件的參照並加上點號 (.) 與方法名稱
例如:objectName.methodName()
(3).使用類別名稱並加上點號 (.) 與方法名稱,呼叫類別的 static 方法
例如:Math.sqrt(900.0)
2、static 方法不可直接呼叫相同類別內的非 static 方法(因為參照的物件可能未產生)
3、對於呼叫語法的 3 種回傳控制:
(1).若方法不會回傳結果:
程式依序執行到方法的結尾
程式最後執行 return (語法後不加回傳的內容)
(2).若方法回傳結果
程式執行 return 回傳值 (expression)
回傳值會先被計算出來,然後傳給呼叫者
六、方法呼叫堆疊和活動記錄
1、堆疊 (stack) 資料結構:
(1).後進先出 (Last-in, First-out) 的資料結構
物品一個一個放置在頂端
物品一個一個從頂端移除
2、當程式執行堆疊:
(1).方法執行時,系統會分配空間,並放入堆疊之中
(2).方法的區域變數、結束時的返回位址會存放在分配的空間裡,當作這個方法的活動記錄 (activation records)
(3).垃圾回收 (garbage collection)
Java 執行環境會自動檢查是否有未被參考的物件並加以清除,以回收所佔據的記憶體空間
七、引數提升與強制轉型
1、引數提升原則:
(1).可以在不影響資料內容的情況下進行轉換
(2).Java 會根據提升原則將引數的型別做適當的轉換並傳遞出去
(3).若未符合提升原則,卻嚐試進行型別轉換會發生編譯錯誤 (資料損失)
2、強制轉型運算子:(強制轉型型別) 變數名稱
若轉型時可能導致資料遺失,需使用強制轉型運算子
八、Java API 套件:
1、Java 有許多預先定義的套件,並且依照相關性加以分類,成為所謂的套件 (package)
2、import 宣告是用來指定編譯 Java 程式所需的類別
例如:import java.util.Scanner;
九、亂數的產生
1、產生亂數有 2 種方式:
(1).Math 類別的 random 方法:
為 static 方法
回傳 double 型態的值( 0.0 <= x < 1.0 )
(2).Random 類別
位於 java.util 的 package 裡
產生介於 0.0 與指定範圍間的亂數
可以事先產生一亂數序列,型態可以是boolean、byte、float、double、int
十、宣告的範圍
1、基本的範圍規則:
(1).參數宣告的範圍適用於宣告所在的方法中
(2).區域變數宣告的範圍是從區段中該宣告處開始,一直到該區段的結尾
(3).出現在 for 敘述式標頭初始化部份的區域變數宣告範圍,適用於 for 敘述式的主體以及標頭中的其它運算式
(4).類別的方法和實體變數的範圍適用於類別的整個主體
2、遮蔽 (shadowing)
(1).如果方法裡的區域變數跟實體變數具有相同的名稱時,當執行到此方法時,實體變數會被「隱藏」起來,直到方法結束執行為止
十一、列舉
1、enum 資料型別:
(1).定義了一個常數集合(以逗號分隔的串列)
(2).都是參照型別(與類別相同)
(3).宣告一個 enum 類別必須遵守下列規則:
enum 型別是隱式的 final
enum 常數是隱式的 static
使用 new 產生一個列舉型別的物件會編譯錯誤
十二、方法的重載:
1、方法重載 (method overloading)
(1).同一個類別內可以宣告多個名稱相同、但參數列不同的方法
(2).呼叫重載的方法時,Java 編譯器會檢查該呼叫提供的參數個數、型別、順序,找到適合的方法
(3).不同的參數列,可以有不同的傳回值型別
留言
張貼留言