# 語言基礎練習
###### 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. 建構式不可以有參數