###### tags: `JSP` `quiz`
# JSP考試題(怎麼都是JAVA的題目??)
## 是非題
1.( O ) 存放在java.util.Map介面內的資料都是一對、一對的物件,存放在java.util.Collection介面內的資料都是一個、一個的物件。
2.( X ) java.io.InputStream類別提供的int read()方法會由程式外部讀取一個位元組的資料,此位元組會被轉換為介於0–255的整數然後傳回此整數。如果沒有資料可供讀取,此方法會傳回null。
Answer : 回傳-1ㄅ
3.( X ) 一個類別的建構子絕對不能使用private來修飾,否則外界不能使用此類別提供的功能。
Answer : Illegal modifier for the class ; only public, abstract & final are permitted
4.( O ) Java語言要區分純文字檔與非文字檔的最根本原因是因為程式執行時,程式內部的文字資料都必須是以Unicode來編碼,包括原本寫在程式內的字元與字串,以及程式由外界讀入的文字資料。
5.( X ) final與abstract兩個修飾字可以同時用來修飾一個Java類別。
The class can be either abstract or final, not both
6.( X ) Java類別的靜態方法m1()可以直接存取該類別的非靜態變數s,如:
Answer: Cannot make a static reference to the non-static field s
```
public class A {
int s = 10;
public static void m1(){
s++;
}
}
```
7.( O ) 在泛型類別的語法中,<T extends Parent> 表示傳入的類別必須是Parent類別或它的子類別,這表示傳入之型態參數受到限制。
8.( X ) 成對(name+value或key+value)的資料所成的集合稱為Map,像亞當與夏娃就是一對資料。(不知道Why)
9.( O ) 子代類別的物件(參考)可直接指定給父代類別的變數而不需要型態轉換。
10.( O ) 任何屬於java.util.Set介面家族的類別都不允許其內有重複的元素。
---
## 選擇題
1.( A ) File類別的哪一個方法可以判斷此File物件是否為資料夾?
(A) isDirectory()
(B) isFile()
\(C\) exists()
(D) isDir()
(E) file()
2.( C ) File類別的哪一個方法可建立多層資料夾?
(A) directorys()
(B) mkdir()
\(C\) mkdirs()
(D) dirs()
(E) files()
3.( C ) 能將Unicode字元依照指定的編碼,正確的轉換為位元組的Java類別為:
(A) java.io.FileOutputStream
(B) java.io.BufferedOutputStream
\(C\) java.io.OutputStreamWriter
(D) java.io.BufferedWriter
(E) java.io.OutputStream
4.( C ) 能將輸入的位元組依照指定的編碼,正確的轉換為Unicode字元的Java類別為:
(A) java.io.FileInputStream
(B) java.io.BufferedInputStream
\(C\) java.io.InputStreamReader
(D) java.io.BufferedReader
(E) java.io.InputStream
5.( C ) 下列哪一個Java類別是表示時間上的一個瞬間?
(A) java.lang.System
(B) java.lang.Runtime
\(C\) java.util.Time
(D) java.util.Date
(E) java.io.Now
6.( A ) 抽象類別的名稱前一列應該加上哪一個修飾字?
(A) abstract (B) static \(C\) final (D) public (E) protected
7.( C ) 父代方法如果不想讓子代類別Override,父代方法應該加上哪一個修飾字?
(A) abstract (B) static \(C\) final (D) public (E) protected
8.( A ) 具備輸出緩衝區的Java類別為
(A) java.io.BufferedOutputStream
(B) java.io.FileOutputStream
\(C\) java.io.ObjectOutputStream
(D) java.io.DataOutputStream
(E) java.io.InputStream
9.( B ) Java語言規定當某個類別override繼承來的equals()方法時,應該同時
override哪一個方法?
(A) toString()方法
(B) hashCode()方法
\(C\) getClass()方法
(D) valueOf() 方法
(E) finalize() 方法
10.( A ) 編譯與執行下列程式會發生:
(A) 螢幕會依序出現: Kitty, Snoopy與Micky三列訊息
(B) 螢幕會依序出現: Kitty, Micky與Snoopy三列訊息
\(C\) 螢幕會出現: Kitty與Snoopy兩列訊息
(D) 螢幕會出現: Micky
(E) 程式無法執行,因為有語法錯誤。
main() 最後跑所以 Kitty->Snoopy->Micky
```
public class MyClass {
static {
System.out.println("Kitty");
}
public static void main(String arguments[]) {
System.out.println("Micky");
}
static {
System.out.println("Snoopy");
}
}
```
---
## 填充題
### 填充1.
* java.io.InputStream家族中的 ++FileInputStream++ 類別可讀取硬碟上的非文字檔;
* java.io.OutputStream家族中的 ++FileOutputStream++ 類別可將非文字資料寫出到硬碟內的檔案。
---
### 填充2.
Java 語言中
* 讀取文字檔的一列文字資料可用 ++BufferedReader++ 類別的 readLine()方法,
* 寫出文字檔的一列文字資料可用 ++PrintWriter++ 類別的 println()方法。
---
### 填充3.
在與Java IO有關的類別中
* ++java.io.Reader++ 家族的類別負責讀取文字資料,
* ++java.io.Writer++ 家族的類別負責寫出文字資料。
---
### 填充4.
Java的java.util.Enumeration\<E\>介面定義下列兩個方法:
```
boolean hasMoreElements()
E nextElement()
```
```
import java.util.Enumeration;
import java.util.Vector;
public class Enumeration4 {
public static void main(String[] args) {
// Number
Vector<Number> v = new Vector<>(); // 它實作java.util.Enumeration<E>介面
v.add(new Integer(25));
v.add(new Double(1.6F));
v.add(new Long(30L));
v.add(27);
double sum = 0;
Enumeration<Number> e = v.elements();
while (e.hasMoreElements()) {// e.hasMoreElements()
Number num = e.nextElement();// e.nextElement()
sum += num.doubleValue();
}
System.out.println("放在v物件內之元素的總和=" + sum);
}
}
```
---
### 填充5.
完成map下列程式片段
```
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Map5 {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("25", 1);
map.put("35", 2);
map.put("45", 3);
map.put("35", 4);
map.put("25", 5);
//map最後長這樣{45=3, 35=4, 25=5}
System.out.println(map.size());
System.out.println(map.get("35"));
Set<String> set = map.keySet();
Collection<Integer> coll = map.values();
}
}
```
---
### 填充6.
完成Iterator下列程式片段
```
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Map6 {
// boolean hasNext()
// E next()
// void remove()
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("25", 1);
map.put("35", 2);
map.put("45", 3);
map.put("35", 4);
map.put("25", 5);
Set<String> set = map.keySet();
// Collection介面的哪個方法會傳回Iterator型別的物件?
Iterator<String> it = set.iterator(); // iterator()
int total = 0;
while (it.hasNext()) {
String str = it.next(); // next()
total += map.get(str); // get(str)
}
// 下一行會印出 12 //
System.out.println(total);
}
}
```
---
### 填充7.
StringBuffer類別的 ++append()++ 方法可在原物件的尾端加上由參數表示的字串。
---
### 填充8.
如果某變數前面有修飾字 ++final++ , 表示此變數一但設定初值就不能改變其內容。
---
### 填充9.
無。
---
### 填充10.
執行ErrorProneC.java時,螢幕會出現96234
->Elephant.walk()
->run()
->int x = 10 / 0 (出現ArithmeticException)
->run()的finally
->System.out.print("9")
->walk()的finally
->System.out.print("6")
->main()的catch接下ArithmeticException
->System.out.print("2")
->main()的finally
->System.out.print("3")
->System.out.print("4");
```
public class ErrorProneC {
public static void main(String[] args) {
try {
Elephant.walk();
System.out.print("1");
} catch (ArithmeticException e) {
System.out.print("2");
} finally {
System.out.print("3");
}
System.out.print("4");
}
}
class Elephant {
public static void walk() {
try {
run();
System.out.print("5");
} finally {
System.out.print("6");
}
System.out.print("7");
}
public static void run() {
try {
int x = 10 / 0;
System.out.print("8");
} finally {
System.out.print("9");
}
System.out.print("0");
}
}
```
---
### 填充11.
區域變數只能使用的修飾字為: ++final++
Answer: Illegal modifier for parameter max; only final is permitted
---
### 填充12.
```
public class saa12 {
public static void main(String[] args) {
int[][] saa = { { 11, 55, 66 }, { 17, 15, 16, 85 }, { 88, 93, 47, 78, 25 }, { 70, 49 }, };
System.out.println(saa.length); // 此敘述會印出 4.
System.out.println(saa[1].length); // 此敘述會印出 4.
System.out.println(saa[1][2]); // 此敘述會印出 16.
}
}
```