首頁 > Java > java教程 > 為什麼我的 Java 建構函數欄位回傳 Null 或預設值?

為什麼我的 Java 建構函數欄位回傳 Null 或預設值?

Patricia Arquette
發布: 2024-12-04 20:33:18
原創
930 人瀏覽過

Why Are My Java Constructor Fields Returning Null or Default Values?

Java 建構函式中欄位初始化的混亂

開發人員可能會遇到在類別建構函式中宣告和初始化的欄位傳回null或預設值的情況詢問。這種行為源自於 Java 中 遮蔽 的概念。

局部變數遮蔽

當局部變數在建構函式中宣告時,它們具有與實例變數同名。然而,Java 優先考慮其範圍內的局部變量,使實例變數黯然失色。考慮以下範例:

public class Sample {
    private String[] elements;
    private int capacity;

    public Sample() {
        int capacity = 10;
        String[] elements;
        elements = new String[capacity];
    }
}
登入後複製

在此建構函式中,局部變數容量初始化為 10,但實例變數容量保持未初始化,導致預設值為 0。同樣,局部變數元素為分配了一個數組引用,但實例變數元素仍為 null。

使用建構子進行遮蔽參數

建構子參數也可以隱藏同名的實例變數。參數的聲明優先,因此無法直接存取實例變數。要引用實例變量,請使用帶有this 主表達式的限定名稱,如下所示:

public Sample(int capacity) {
    this.capacity = capacity;
}
登入後複製

推薦

為了避免混淆,這是最佳實踐盡可能為局部變數、建構函式參數和實例變數使用唯一的名稱。這可以防止意外的陰影並確保欄位按預期初始化。

以上是為什麼我的 Java 建構函數欄位回傳 Null 或預設值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板