# 8/27 K速記 鍊式調用 ```java= BookShelf shelf = gen(); shelf .by("abc") //傳回名稱搜尋的暫存 BookShelf .by(data) //使用上方的暫存書架 再使用日期搜尋,回傳暫存書架2, .printAll //將上一層回傳的 ``` 利用回傳的類別(暫存),可再調用同類別方法, >超有趣的方法阿! # 修飾詞 * static : 會在程式建立時候,建立在 globle 記憶體區, ```java= public void main(String[] args){ Test t1 = new Test(); Test t2 = new Test(); System.jout.println(Test.getSerila());//可無須實體 直接使用 <類別等級.方法> } ``` ```java= public class Test{ public static int serial; private int a; public test(){ a=5; // == this.a 實體等級 serial++; //所有test 類別 都可以調用此數值,且不會消失。 } public static int getSerial(){ // a--;//無實體無法調用 此處會報錯。 return serial;// = Test.serial 類別等級 } } ``` * final : 不能再被修改的 修飾詞 ```java= final int a =5; a = 3; //此處會報錯 ``` static final => 常數 /統一調用 以 **全大寫**命名 在類別中調用,可減少重複建立,也可減少重複輸入造成的錯誤, * enum : 列舉 ```java= public class Main{ public static final int COLOR_RED = 0; public static final int COLOR_BLUE = 1; public static final int COLOR_GREEN = 2; enum Color{ //使用列舉 代替 同類的 多個常數 RED, BLUE, GREEN; } public static void main(String[] args){ System.out.println(Color.BLUE);//會印出BLUE } } ``` 使用enum 若只有兩種 與boolean類似,但超過兩種 若使用int 則需要判定範圍, 且數值並不重要,直接使用名稱進行判定即可, ```java= public class Student{ private Sex sex public enum Sex{ MALE("男"),// = FEMALE("女"); String value; //屬性 Sex(String value){ // 此列舉物件的建構子 this.value = value; } public string getValue(){ //此列舉物件的方法 return this.value; } } public sort(int[] arr,Compare compare){ //限定輸入類型 if (compare == Compare.MAX){ //...大往小排序 } else { //...小往大排序 } } puvlic setSex(){ } } ``` ```java= public void main(String[] args){ Student s = new Student(); s.setSex(Student.Sex.MALE); //在學生類別,設定MALE類別 設定到該學生資訊 System.out.print(s.sex.getValue()); //s.sex = s.Sex.Male //印出 (s學生.sex(Sex列舉.值(MALE)).取值方法回傳值), Ststem.out.print(Student.Sex.MALE.getValue()); //印出Student類別內.Sex.MALE的getValuec)值 Ststem.out.print(Student.Sex.FEMALE.getValue()); } ```