首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java 技能測驗進階篇:迴圈邏輯、包裝類比較、Vector 用法與私有方法繼承

     編輯:Java 程式設計入門

本組測驗題深入考察 for 迴圈邏輯構造、包裝類 equals 與 == 語義差異、Vector 正確用法、私有方法不可繼承特性、main 方法調用實例方法限制等進階語法陷阱。

第 9 題:for 迴圈正確填充陣列


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。

第 10 題:包裝類比較陷阱


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

  • A false:不同類型物件引用必不相等。
  • B false:new 創建不同物件,== 比較引用地址。
  • C true:Integer.equals 比較數值內容,9==9。
  • D false:equals 參數為 int 基本類型,自動裝箱為 Integer 後比較?實際 Integer.equals(Object) 接收 Object,傳入 int 會裝箱為 Integer,故 s.equals(9) 應為 true。注:JDK 版本差異,早期版本可能 false,現代 JDK 為 true。
  • E true:新建 Integer(9) 內容相同,equals 返回 true。

核心結論:包裝類比較內容必用 equals();== 僅比較引用同一性;小整數緩存(-128~127)僅適用自動裝箱場景,new 總創建新物件。

第 11 題:Vector 正確實例化與添加元素

選項:

  • A. Vector v = new Vector(99); v[1]=99; ✗ 陣列語法非法
  • B. Vector v = new Vector(); v.addElement(99); ✓ 自動裝箱為 Integer
  • C. Vector v = new Vector(); v.add(99); ✓ Java 1.2+ List 介面方法,自動裝箱
  • D. Vector v = new Vector(100); v.addElement("99"); ✓ 添加字串合法,但題目語境暗示添加數值

正解:B、C、D(語法均合法)。若限定「添加整數 99」,B、C 更貼切。Vector 為舊集合類,現代開發優先選 ArrayList(非同步、效能更佳)。

第 12 題:私有方法不可繼承、非多態調用


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() 則輸出父類版本。

第 13 題:main 方法不可直接調用實例方法


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》相關條目深度內化。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved