本組測驗題深入考察 for 迴圈邏輯構造、包裝類 equals 與 == 語義差異、Vector 正確用法、私有方法不可繼承特性、main 方法調用實例方法限制等進階語法陷阱。
int ia[] = new int[4];
// Start For loop
{ ia[i] = i; System.out.println(ia[i]); }
選項:A. for(int i=0; i < ia.length; i++) B. for(int i=0; i < 4; i++) C. for(int i=0; i<4; i++) D. for(int i=0; i <=3; i++)
正解:A、B、C、D 全部正確(語法合法且邏輯等價)
解析:四種寫法均能遍歷索引 0-3。A 使用 ia.length 最佳實踐(適應陣列長度變化);B、C 硬編碼長度 4;D 用 <=3 等價。考點:迴圈邊界條件等價性與最佳實踐差異。實際開發首選 A。
Integer s = new Integer(9);
Integer t = new Integer(9);
Long u = new Long(9);
哪個測試返回 true? A. s==u B. s==t C. s.equals(t) D. s.equals(9) E. s.equals(new Integer(9))
正解:C、E
s.equals(9) 應為 true。注:JDK 版本差異,早期版本可能 false,現代 JDK 為 true。核心結論:包裝類比較內容必用 equals();== 僅比較引用同一性;小整數緩存(-128~127)僅適用自動裝箱場景,new 總創建新物件。
選項:
Vector v = new Vector(99); v[1]=99; ✗ 陣列語法非法Vector v = new Vector(); v.addElement(99); ✓ 自動裝箱為 IntegerVector v = new Vector(); v.add(99); ✓ Java 1.2+ List 介面方法,自動裝箱Vector v = new Vector(100); v.addElement("99"); ✓ 添加字串合法,但題目語境暗示添加數值正解:B、C、D(語法均合法)。若限定「添加整數 99」,B、C 更貼切。Vector 為舊集合類,現代開發優先選 ArrayList(非同步、效能更佳)。
class Base { private void amethod(int iBase) {...} }
class Over extends Base {
main() { Over o=new Over(); o.amethod(0); }
public void amethod(int iOver) {...}
}
正解:D. 輸出 "Over.amethod"
解析:Base.amethod() 為 private,不可繼承、不可覆寫、不可多態。Over.amethod() 為全新方法(非覆寫)。main 中 o.amethod(0) 編譯期綁定 Over.amethod(),輸出子類版本。若 Base.amethod() 為非 private,則為覆寫,輸出 "Over.amethod"(多態);若調用 super.amethod() 則輸出父類版本。
public class MyClass {
main(args) { amethod(args); } // 編譯錯誤
amethod(String[] args) { ... }
}
正解:A. 編譯錯誤:靜態方法不可引用非靜態方法
解析:main 為 static 靜態方法,amethod 為實例方法。靜態上下文無 this 引用,無法直接調用實例方法。修正:new MyClass().amethod(args); 或將 amethod 改為 static。
這組題目精準切中 Java 進階語法痛點:迴圈最佳實踐、包裝類比較語義、集合舊 API 用法、私有方法封裝邊界、靜態上下文限制。建議配合《Effective Java》相關條目深度內化。