SCJP 1.6版考題 015

出自 陳富國維基館
前往: 導覽搜尋
11. class Mud{
12.   //insert code here
13.   System.out.println("hi");
14.   }
15. }

And the following five fragments:
public static void main(String...a){
public static void main(String.* a){
public static void main(String... a){
public static void main(String[]... a){
public static void main(String...[] a){

How many of the code fragments,inserted independently at line 12,compile?
   A. 0 
   B. 1
   C. 2
   D. 3
   E. 4
   F. 5


解答


Ans: D

解說:

public static void main(String...a){
public static void main(String.* a){ //錯,沒有*這種用法
public static void main(String... a){
public static void main(String[]... a){
public static void main(String...[] a){ //錯,…必須出現在[]之後,參考第2點的解釋

參數列表使用上的限制
1. 參數列表與陣列參數意義相同,不可同時出現。
   //下列2個方法雖然寫法不同,但會被視為相同的方法
   void showName(String... names)
   void showName(String[] names)

2. 參數列表要放在所有參數的後面。
   void showName(String str, String... names) //正確
   void showName(String... names, String str) //錯誤
   //編譯器無法判斷要如何切割,所以編譯失敗
   showName("C++概論", "資料庫概論", "網路概論");

 3. 1個方法只能使用1次參數列表。
   void showName(String str, String... names) //正確
   void showName(String... str, String... names) //錯誤