# 語言基礎練習 ###### tags: `java` `exam` ## 目錄 - [基礎](#基礎) - [流程控制](#流程控制) - [資料結構](#資料結構) - [類別與物件](#類別與物件) - [大型程式](#大型程式) ## 基礎 1. Java標準輸出和標準輸入的物件為何? 2. 下面何者非邏輯運算子? a. && b. & c. || 3. Java唯一的三元運算子為何? 4. int和long型態有何不同? 5. 下面程式碼有何錯誤?該如何修正? ``` float a = 33; ``` 6. System.out物件裡的print()、println()和printf()三個方法有何不同? 7. 如何將字串轉為int型態?請寫出程式碼。 8. 如何將long型態轉為int型態?請寫出程式碼。 9. 請問`5 & 3`和`5 && 3` 運算出來結果有何不同? 10. 下面陳述句中,哪一個是資料型態?哪一個是變數名稱?哪一個是初始值? ``` String STR = "string"; ``` 11. 資料型態`int`和`Integer`有何差異? 12. 請問下面程式片段會輸出什麼到標準輸出? ``` System.out.println("3 + 4 = " + 3 + 4); ``` ## 流程控制 1. 使用while迴圈,寫出加總2~99之間的偶數並顯示到標準輸出。 2. 請問下面程式碼片段會輸出什麼到標準輸出? ``` final int i = 10; if(i != 10); { System.out.println("Hello"); } else { System.out.println("Java"); } ``` 3. break和continue差別是什麼? 4. 請問下面程式碼片段會輸出什麼到標準輸出? ``` for(int i = 10 ; i <= 10 ; i++) i += 2; System.out.println(i); ``` 5. 下面迴圈內的System.out會被執行幾次? ``` for(int i = 0 ; i < 100 ; i++) for(int j = 0 ; j < 100 ; j++) System.out.println("我會被執行幾次?"); ``` 6. while和do...while迴圈的差別是什麼? 7. 下面程式碼會輸出什麼到標準輸出? ``` String a = 10; switch(a) { case 10: System.out.println("10") case 8: System.out.println("8") case 6: System.out.println("6") case 0: System.out.println("0") default: System.out.println("default") } ``` 8. 下面程式碼會輸出什麼到標準輸出? ``` String a = new String("Hello"); String b = new String("Hello"); if(a == b) { System.out.println("相同"); } else { System.out.println("不相同"); } ``` 9. 使用for迴圈,在標準輸出顯示如下圖形: ``` * *** ***** ******* ``` 10. 使用switch,讓使用者輸入一個英文字母,然後片段是母音還是子音,例如: ``` 請輸入一英文字母:a a是母音字母 請輸入一英文字母:t t是子音字母 ``` 11. 寫一程式,根據輸入的學生成績來判斷等級,規則如下: - 分數大於90並且小於等於100為:超優秀 - 分數大於80並且小於等於90為:優秀 - 分數大於70並且小於等於80為:良好 - 分數大於等於60並且小於等於70為:及格 - 分數小於60為:不及格 ## 資料結構 1. 寫一程式,從1~10之間取5個不重複亂數,並顯示到標準輸出,例如: ``` 3 8 9 1 5 ``` 2. 寫一程式,不管使用者輸入什麼英文,一率轉為大寫後再輸出,例如: ``` 請輸入英文:Today is not my day. 輸出:TODAY IS NOT MY DAY. ``` 3. 寫一程式,將下列陣列反過來輸出: ``` int[] data = {55, 66, 77, 88, 99}; ``` 輸出為: ``` 99 88 77 66 55 ``` 4. 寫一程式,讓使用者輸入任意個數字,然後顯示最小值、最大值和平均值。 5. 請描述List、Set、Map容器個有什麼特色? 6. 請將下面陣列的所有元素加總後顯示出來: ``` int[] data = {34, 56, 78, 90, 12}; ``` 7. 請問下面程式碼會輸出什麼結果? ``` int a = 6; String[] strs = new String[6]; Arrays.fill(strs, "x"); System.out.println(Arrays.toString(strs)); ``` 8. 將下面陣列的數字顯示到標準輸出,先顯示奇數,然後換行顯示偶數。 ``` int[] data = {34, 56, 78, 91, 13, 26, 69, 40}; ``` 輸出為: ``` 91 13 69 34 56 78 26 40 ``` 9. 請問要取出陣列內所有元素有哪些方式? 10. 陣列和List容器有哪些差異? 11. 寫一程式,計算下面文章內的每個英文單字總共出現幾次: ``` Mary is a good person and she always like to go to school. She is a good student too. One day she got accident during walk to school. ``` 將輸出: ``` Mary: 1次 is: 2次 a: 2次 she: 3次 ... 以下省略 ``` 12. 下面有一陣列,請將該陣列內的資料打亂後輸出,每次執行都會以不同的順序。 ``` String[] names = {"Aaron", "Apple", "Adam", "Abner", "Andy", "Ada", "Astrid", "Alan"}; ``` ## 類別與物件 1. 物件導向的三大特性為何? 2. 下面哪些關於Java物件導向的開發觀念是錯的? a. 可以多重繼承 b. 可以實現多重介面 c. 有抽象方法的類別必定是抽象類別 d. 子類別繼承自抽象類別ㄧ定要實現父類別的抽象方法 e. 類別繼承和實現介面只能擇一實作 3. 下面類別定義,哪裡有錯誤? ``` public class Shape() { public Shape() { System.out.println("建構式"); } public draw() { System.out.println("Shape.draw()"); } } ``` 4. 請描述static修飾過的類別成員和沒有static修飾過的類別成員的差別。 5. 請問使用final修飾過的類別和final修飾過的方法有什麼差別? 6. 該如何呼叫父類別的show()方法? 7. 下面關於建構式,哪些觀念是錯的。 a. 建構式可以有多個 b. 建構式沒有回傳值 c. 子類別的建構式執行後,父類別的建構式會接著執行 d. 建構式不可以有參數