首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 筆試題解析:static 變數傳值不影響原值、null 強轉呼叫靜態方法

     編輯:程式設計綜合問答

題目一:static 變數與方法參數

static int x = 0;
public static void name(int x) { x++; }
main() { name(x); System.out.println(x); } // 輸出 0

原因:name(int x) 參數 x **遮蔽** 了靜態欄位 x,方法內 x++ 僅修改區域參數,靜態欄位維持 0。若要修改靜態欄位,應去掉參數直接用 ClassName.x++ 或 this.x++ (非靜態語境)。

題目二:null 強轉呼叫靜態方法

((A)null).testMethod("tom");

解析:

  1. null 可強轉為任何參考型別,結果仍為 null 參考。
  2. 呼叫 **靜態方法** 時,JVM 僅檢查**編譯時型別** (A) 解析方法,**不需物件實例**,故不拋 NullPointerException。
  3. 等價於 A obj = null; obj.testMethod("tom"); 或直接 A.testMethod("tom");。

核心知識點

  • Java **值傳遞**:基本型別參數修改不影響實參;參考型別參數修改**物件內容**會影響,但**重新指派參數**不影響實參。
  • 靜態方法屬於類,不屬於實例,可透過 null 參考呼叫 (不推薦,降低可讀性)。

這兩題考察「變數遮蔽」與「靜態方法解析機制」,是 Java 基礎高頻考點。

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