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

【Java每日一題】this 關鍵字與參數遮蔽陷阱

     編輯:Java 綜合教學

【Java每日一題】this 關鍵字與參數遮蔽陷阱

今日考點:構造器/設值方法中參數名與成員變量名相同時,this 的作用。

題目代碼

package Nov2016;
public class Ques1104 {
    private String num;

    public void setNum(String num) {
        num = num;        // 1
        this.num = num;   // 2
    }

    public String getNum() { return num; }
}

問題

註釋 1 和 2 兩處的作用是否一樣?

答案與解析

答案:作用完全不同。

  • 第 1 行 num = num;:參數 num 遮蔽了成員變量 num,這是「自我賦值」,成員變量值不變。
  • 第 2 行 this.num = num;:this.num 顯式引用當前對象的成員變量,正確將參數值賦給成員變量。

核心知識點

  1. Java 允許局部變量(參數)與成員變量同名,局部變量優先(遮蔽)。
  2. this 代表當前對象引用,this.field 可消除歧義,訪問被遮蔽的成員。
  3. 構造器、Setter 中常見此模式,務必加 this.,否則屬性賦值失效。

最佳實踐

  • IDE 產生 Setter 時自動加 this.。
  • 代碼規範建議:參數名與字段名錯開(如 num / num_),或統一使用 this.field = param 風格。

這道題看似簡單,卻是新手極易踩坑、老手面試愛問的基礎考點,理解 this 機制對寫出正確 Java 代碼至關重要。

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