---
# System prepended metadata

title: JSP考試題(怎麼都是JAVA的題目??)
tags: [quiz, JSP]

---

###### 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.
	}

}
```