Java中類變量和實例變量的初始化


1. 類變量和實例變量

類變量即類成員變量中的靜態變量,它們可以通過類名來直接訪問。

實例變量是類成員變量中的非靜態變量,只有在實例化對象之后通過對象來訪問。

2. 空間分配的時間不同

類變量是在類加載后的准備階段在方法區分配內存的。

實例變量是在類實例化為對象的時候在堆中分配內存。

3. 初始化

類變量在准備階段會進行默認初始化,當某些條件滿足時候會觸發類的初始化。詳見《深入理解java虛擬機》的類加載機制。

實例變量在空間分配內存后,虛擬機會將所分配到的內存空間都初始化為零值(不包括對象頭)。這一步操作保證了對象的實例字段在java代碼中可以不賦初值就可以直接訪問,程序能訪問到這些字段的數據類型所對應的零值。

對於局部變量,只能顯示地進行初始化,否則不能訪問該變量的值。

4. final關鍵字

當final關鍵字作用於類變量時,必須有顯示的初始化。在聲名對象的語句中初始化,或者在靜態代碼塊中進行初始化。

當final關鍵字作用於實例變量時,也必須進行顯示的初始化。在聲名對象的語句中初始化,或者在構造代碼塊中進行初始化,或者在所有的構造函數中進行初始化。

final修飾的變量只能初始化化一次,因此該變量已經在一種方式中進行過初始化,則不能在另一種方式再進行一次初始化。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM