SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 30 day free trial to unlock unlimited reading.
17.
17
第 5 章課後練習
課後練習
選擇題
1. 如果有以下程式片段:
public class Some {
private Some some;
private Some() {}
public static Some create() {
if(some == null) {
some = new Some();
}
return some;
}
}
以下描述何者正確?
(A) 編譯失敗
(B) 客戶端必須 new Some()產 Some 生實例
(C) 客戶端必須 new Some().create()產生 Some 實例
(D) 客戶端必須 Some.create()產生 Some 實例
答案:A
2. 如果有以下程式片段:
int[] scores1 = {88, 81, 74, 68, 78, 76, 77, 85, 95, 93};
int[] scores2 = Arrays.copyOf(scores1, scores1.length);
其中 Arrays 完全吻合名稱為 java.util.Arrays,以下描述何者正確?
(A) Arrays.copyOf()應該改為 new Arrays().copyOf()
(B) copyOf()是 static 成員
(C) copyOf()是 public 成員
(D) Arrays 被宣告為 public
答案:B、C、D
3. 如果有以下程式片段:
public class Some {
18.
18
public int x;
public Some(int x) {
this.x = x;
}
}
以下描述何者正確?
(A) 建構 Some 時,可使用 new Some()或 new Some(10)形式
(B) 建構 Some 時,只能使用 new Some()形式
(C) 建構 Some 時,只能使用 new Some(10)形式
(D) 沒有無引數建構式,所以編譯失敗
答案:C
4. 如果有以下程式片段:
public class Some {
public int x;
public Some(int x) {
x = x;
}
}
以下描述何者正確?
(A) new Some(10)建構物件後,物件成員 x 值為 10
(B) new Some(10)建構物件後,物件成員 x 值為 0
(C) Some s = new Some(10)後,可使用 s.x 取得值
(D) 編譯失敗
答案:B、C
5. 如果有以下程式片段:
public class Some {
private int x;
public Some(int x) {
this.x = x;
}
}
以下描述何者正確?
(A) new Some(10)建構物件後,物件成員 x 值為 10
(B) new Some(10)建構物件後,物件成員 x 值為 0
(C) Some s = new Some(10)後,可使用 s.x 取得值
(D) 編譯失敗
19.
19
答案:A
6. 如果有以下程式片段:
package cc.openhome.util;
class Some {
public int x;
public Some(int x) {
this.x = x;
}
}
以下描述何者正確?
(A) cc.openhome.util 套件中其它程式碼可以 new Some(10)
(B) cc.openhome.util 套件外其它程式碼可以 new Some(10)
(C) 可以在其它套件 import cc.openhome.util.Some;
(D) 編譯失敗
答案:A
7. 如果有以下程式片段:
public class Some {
private final int x;
public Some() {}
public Some(int x) {
this.x = x;
}
}
以下描述何者正確?
(A) new Some(10)建構物件後,物件成員 x 值為 10
(B) new Some(10)建構物件後,物件成員 x 值為 0
(C) Some s = new Some(10)後,可使用 s.x 取得值
(D) 編譯失敗
答案:D
8. 如果有以下程式片段:
public class Some {
public static int sum(int... numbers) {
int sum = 0;
for(int i = 10; i < numbers.length; i++) {
sum += numbers[i];
20.
20
}
return sum;
}
}
以下描述何者正確?
(A) 可使用 Some.sum(1, 2, 3)加總 1、2、3
(B) 可使用 new Some().sum(1, 2, 3)加總 1、2、3
(C) 可使用 Some.sum(new int[1, 2, 3])加總 1、2、3
(D) 編譯失敗,因為不定長度引數只能用增強式 for 迴圈語法
答案:A、B、C
9. 如果有以下程式片段:
public class Some {
public static void someMethod(int i) {
System.out.println("int 版本被呼叫");
}
public static void someMethod(Integer integer) {
System.out.println("Integer 版本被呼叫");
}
}
以下描述何者正確?
(A) Some.someMethod(1)顯示「int 版本被呼叫」
(B) Some.someMethod(1)顯示「Integer 版本被呼叫」
(C) Some.someMethod(new Integer(1))顯示「int 版本被呼叫」
(D) 編譯失敗
答案:A
10. 如果有以下程式片段:
public class Main {
public int some(int... numbers) {
int sum = 0;
for(int number : numbers) {
sum += number;
}
return sum;
}
public static void main(String[] args) {
System.out.println(sum(1, 2, 3));
23.
23
第 6 章課後練習
課後練習
選擇題
1. 如果有以下程式片段:
class Some {
void doService() {
System.out.println("some service");
}
}
class Other extends Some {
@Override
void doService() {
System.out.println("other service");
}
}
public class Main {
public static void main(String[] args) {
Other other = new Other();
other.doService();
}
}
以下描述何者正確?
(A) 編譯失敗
(B) 顯示 some service
(C) 顯示 other service
(D) 先顯示 some service、後顯示 other service
答案:C
2. 承上題,如果 main()中改為:
Some some = new Other();
some.doService();
以下描述何者正確?
(A) 編譯失敗
24.
24
(B) 顯示 some service
(C) 顯示 other service
(D) 先顯示 some service、後顯示 other service
答案:C
3. 如果有以下程式片段:
class Some {
String ToString() {
return "Some instance";
}
}
public class Main {
public static void main(String[] args) {
Some some = new Some();
System.out.println(some);
}
}
以下描述何者正確?
(A) 顯示 Some instance
(B) 顯示 Some@XXXX,XXXX 為 16 進位數字
(C) 發生 ClassCastException
(D) 編譯失敗
答案:B
提示:因為是新定義了個 ToString()方法,而非重新定義 toString()方法
4. 如果有以下程式片段:
class Some {
int hashCode() {
return 99;
}
}
public class Main {
public static void main(String[] args) {
Some some = new Some();
System.out.println(some.hashCode());
}
}
以下描述何者正確?
25.
25
(A) 顯示 99
(B) 顯示 0
(C) 發生 ClassNotFoundException
(D) 編譯失敗
答案:D
提示:因為 hashCode()在 Object 中定義為 public
5. 如果有以下程式片段:
class Some {
@Override
String ToString() {
return "Some instance";
}
}
public class Main {
public static void main(String[] args) {
Some some = new Some();
System.out.println(some);
}
}
以下描述何者正確?
(A) 顯示 Some instance
(B) 顯示 Some@XXXX,XXXX 為 16 進位數字
(C) 發生 ClassCastException
(D) 編譯失敗
答案:D
提示:因為加了@Override,實際上父類別中並沒有 ToString()方法
6. 如果有以下程式片段:
class Some {
abstract void doService();
}
class Other extends Some {
@Override
void doService() {
System.out.println("other service");
}
}
26.
26
public class Main {
public static void main(String[] args) {
Some some = new Other();
some.doService();
}
}
以下描述何者正確?
(A) 編譯失敗
(B) 顯示 other service
(C) 執行時發生 ClassCastException
(D) 移除@Override 可編譯成功
答案:A
7. 如果有以下程式片段:
class Some {
protected int x;
Some(int x) {
this.x = x;
}
}
class Other extends Some {
Other(int x) {
this.x = x;
}
}
以下描述何者正確?
(A) new Other(10)後,物件成員 x 值為 10
(B) new Other(10)後,物件成員 x 值為 10
(C) Other 中無法存取 x 的編譯失敗
(D) Other 中無法呼叫父類別建構式的編譯失敗
答案:D
8. 如果有以下程式片段:
public class IterableString extends String {
public IterableString(String original) {
super(original);
}
public void iterate() {
27.
27
//...
}
}
以下描述何者正確?
(A) String s = new IterableString("J")可通過編譯
(B) IterableString s = new IterableString("J")可通過
編譯
(C) 因無法呼叫 super()的編譯失敗
(D) 因無法繼承 String 的編譯失敗
答案:D
提示:String 類別是 final 類別
9. 如果有以下程式片段:
class Some {
Some() {
this(10);
System.out.println("Some()");
}
Some(int x) {
System.out.println("Some(int x)");
}
}
class Other extends Some {
Other() {
super(10);
System.out.println("Other()");
}
Other(int y) {
System.out.println("Other(int y)");
}
}
以下描述何者正確?
(A) new Other()顯示"Some(int x)"、"Other()"
(B) new Other(10)顯示"Other(int y)"
(C) new Some()顯示"Some(int x)"、"Some()"
(D) 編譯失敗
答案:A、C
28.
28
10. 如果有以下程式片段:
class Some {
Some() {
System.out.println("Some()");
this(10);
}
Some(int x) {
System.out.println("Some(int x)");
}
}
class Other extends Some {
Other() {
super(10);
System.out.println("Other()");
}
Other(int y) {
System.out.println("Other(int y)");
}
}
以下描述何者正確?
(A) new Other()顯示"Some(int x)"、"Other()"
(B) new Other(10)顯示"Some()"、"Some(int x)"、"Other(int y)"
(C) new Some()顯示"Some(int x)"、"Some()"
(D) 編譯失敗
答案:D
提示:this()或 super()都只能出現在建構式第一行
實作題
1. 如果使用 6.2.5 設計的 ArrayList 類別收集物件,想顯示所收集物件之字
串描述時,必須如下:
ArrayList list = new ArrayList();
//...收集物件
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
請重新定義 ArrayList 的 toString()方法,讓客戶端想顯示所收集物
29.
29
件之字串描述時,可以如下:
ArrayList list = new ArrayList();
//...收集物件
System.out.println(list);
2. 承上題,若想比較兩個 ArrayList 實例是否相等,希望可以如下比較:
ArrayList list1 = new ArrayList();
//...用 list1 收集物件
ArrayList list2 = new ArrayList();
//...用 list2 收集物件
System.out.println(list1.equals(list2));
請重新定義 ArrayList 的 equals()方法,先比較收集的物件個數,再比
較各索引之物件實質上是否相等(使用各物件的 equals()比較)。
30.
30
第 7 章課後練習
課後練習
選擇題
1. 如果有以下程式片段:
interface Some {
protected void doSome();
}
class SomeImpl implements Some {
public void doSome() {
System.out.println("作一些事");
}
}
public class Main {
public static void main(String[] args) {
Some s = new SomeImpl();
s.doSome();
}
}
以下描述何者正確?
(A) 編譯失敗
(B) 顯示"作一些事"
(C) 發生 ClassCastException
(D) 執行時不顯示任何訊息
答案:A
2. 如果有以下程式片段:
interface Some {
int x = 10;
}
public class Main {
public static void main(String[] args) {
System.out.println(Some.x);
}
31.
31
}
以下描述何者正確?
(A) 編譯失敗
(B) 顯示 10
(C) 必須建構 Some 實例才能存取 x
(D) 顯示 0
答案:B
3. 如果有以下程式片段:
interface Some {
void doSome();
}
class SomeImpl implements Some {
void doSome() {
System.out.println("作一些事");
}
}
public class Main {
public static void main(String[] args) {
Some s = new SomeImpl();
s.doSome();
}
}
以下描述何者正確?
(A) 編譯失敗
(B) 顯示"作一些事"
(C) 發生 ClassCastException
(D) 執行時不顯示任何訊息
答案:A
4. 如果有以下程式片段:
interface Some {
void doSome();
}
class SomeImpl implements Some {
public void doSome() {
System.out.println("作一些事");
}
32.
32
}
public class Main {
public static void main(String[] args) {
Some s = new SomeImpl();
s.doSome();
}
}
以下描述何者正確?
(A) 編譯失敗
(B) 顯示"作一些事"
(C) 發生 ClassCastException
(D) 執行時不顯示任何訊息
答案:B
5. 如果有以下程式片段:
interface Some {
void doSome();
}
interface Other {
void doOther();
}
class SomeOtherImpl implements Some, Other {
public void doSome() {
System.out.println("作一些事");
}
public void doOther() {
System.out.println("作其它事");
}
}
public class Main {
public static void main(String[] args) {
Some s = new SomeOtherImpl();
s.doSome();
Other o = (Other) s;
o.doOther();
}
}
以下描述何者正確?
33.
33
(A) 編譯失敗
(B) 顯示"作一些事"、"作其它事"
(C) 發生 ClassCastException
(D) 執行時不顯示任何訊息
答案:B
6. 如果有以下程式片段:
interface Some {
void doSome();
}
abstract class AbstractSome implements Some {
public abstract void doSome();
public void doService() {
System.out.println("作一些服務");
}
}
public class Main {
public static void main(String[] args) {
AbstractSome s = new AbstractSome();
s.doService();
}
}
以下描述何者正確?
(A) 編譯失敗
(B) 顯示"作一些服務"
(C) 發生 ClassCastException
(D) 執行時不顯示任何訊息
答案:A
7. 如果有以下程式片段:
interface Some {
void doSome();
}
abstract class AbstractSome implements Some {
public abstract void doSome();
public void doService() {
System.out.println("作一些服務");
}
34.
34
}
public class Main {
public static void main(String[] args) {
AbstractSome s = new AbstractSome() {
public void doSome() {
System.out.println("作一些事");
}
public void doService() {
}
};
s.doService();
}
}
以下描述何者正確?
(A) 編譯失敗
(B) 顯示"作一些服務"
(C) 發生 ClassCastException
(D) 執行時不顯示任何訊息
答案:D
8. 如果有以下程式片段:
interface Some {
void doSome();
}
public class Main {
public static void main(String[] args) {
Some s = new Some() {
public void doSome() {
System.out.println("作一些事");
}
public void doService() {
System.out.println("作一些服務");
}
};
s.doService();
}
}
以下描述何者正確?
35.
35
(A) 編譯失敗
(B) 顯示"作一些服務"
(C) 發生 ClassCastException
(D) 執行時不顯示任何訊息
答案:A
9. 如果有以下程式片段:
interface Some {
protected static final int x = 10;
}
public class Main {
public static void main(String[] args) {
System.out.println(Some.x);
}
}
以下描述何者正確?
(A) 編譯失敗
(B) 顯示 10
(C) 必須建構 Some 實例才能存取 x
(D) 顯示 0
答案:A
10. 如果有以下程式片段:
interface Some {
void doSome();
void doService() {
System.out.println("作一些服務");
}
}
class SomeImpl implements Some {
public void doSome() {
System.out.println("作一些事");
}
}
public class Main {
public static void main(String[] args) {
Some s = new SomeImpl();