當前位置:首頁 » 編程語言 » java屬性的初始化

java屬性的初始化

發布時間: 2023-01-24 08:41:30

java屬性常量沒有默認值那屬性載入時是怎麼分配空間的,java 不是給屬性開辟空間時會先給默認值嗎

關於分配空間這個你網路一下JVM內存結構;就可以了解詳細機制了;


首先你截圖的變數是成員變數(定義在類中,方法體之外。變數在創建對象時實例化。成員變數可被類中的方法、構造方法以及特定類的語句塊訪問)。而且是實例變數不是靜態變數,實例變數不分基本類型和引用類型都是在在對象創建的時候分配內存空間,存儲在堆中

類變數的初始化分為兩個階段。第一次是在類載入的准備階段。准備階段會正式為類變數分配內存並設置類變數的初始值。如果類變數是基本數據類型,初始值為其對應初值,如果為對象類型,初始值為null。如果類變數同時被final關鍵字修飾,那麼准備階段就會直接將變數賦值。

成員變數屬於對象獨有,每個對象創建時只會調用一次構造函數。成員變數可在定義時初始化,也可以在所有構造函數中初始化。你的a雖然定義時沒初始化,但你在所有構造方法中初始化了。

當類中有靜態成員變數,普通成員變數,靜態初始化塊,非靜態初始化塊,局部變數和構造函數初始化動作時:①首先執行靜態成員變數的初始化,②其次是普通成員變數的初始化,③然後當靜態初始化塊中的變數被類名訪問或創建該類對象時時執行靜態初始化塊,創建該類對象也會執行非靜態初始化塊,④最後執行構造函數當中的初始化動作,⑤最後當類中的函數被調用時執行局部變數的初始化動作。

⑵ java@notnull標注的屬性必須在構造函數里初始化嗎

不是。java是一種面向對象的編程語言,語言中的null構造函數是不能去初始化屬性的,但是可以用notnull進行委託。

⑶ java中為什麼要為類的屬性初始化

1. 對於類的成員變數,不管程序有沒有顯式的進行初始化,Java虛擬機都會先自動給它初始化為默認值。
默認值如下:

Boolean false

Char '\u0000'(null)

byte (byte)0

short (short)0

int 0

long 0L

float 0.0f

double 0.0d
2. 局部變數聲明之後,Java虛擬機就不會自動給它初始化為默認值,因此局部變數的使用必須先經過顯式的初始化。
但是需要聲明的是:對於只負責接收一個表達式的值的局部變數可以不初始化,參與運算和直接輸出等其它情況的局部變數需要初始化。

⑷ java中屬性的初始化方法

屬性的類型不同初始化的方法也不一樣吧。除了Java的內建類型以為的數據類型初始化的話都是用new關鍵字來實現的。

⑸ Java類屬性初始化是什麼

1.我們都知道java是面向對象的語言, 那麼類就好比是一個模板, 比如Student類, 這個類其實是一個模板, 是一個規范.

然後我們執行下面這行代碼

Student xiaoMing = new Student();

就相當於我們用Student這個模板去生成了一個對象, 這個對象叫xiaoMing.

如果Student這個類有一個屬性private int age;當我們只是做上面new對象的動作時候, xiaoMing的age並沒有被賦值, 只是初始化成了0

(數值類型的屬性初始化都是0, String則是null, 例如有個字元串類型的屬性name就會是null)

然後xiaoMing.setAge(10); 那麼這個時候xiaoMing的age屬性才變成10,

所以類屬性初始化指的就是在new對象的時候對各個屬性賦予一個初始化的值.

2.為什麼要用構造方法進行屬性初始化:

這個並不是強制的, 構造方法分成無參構造和帶參構造, 用構造方法對屬性進行初始化只是單純的為了方便而已.

⑹ java裡面什麼叫為屬性初始化

初始化根據字面意思比較容易理解 就是給屬性賦一個初始值
比如你定義了一個屬性整型的age:
private int age; //這樣算是定義了一個 但是並沒有初始化
private int age=20;//這樣才算初始化
如果你在調用時 又沒初始化它 有時候就會出現問題 比如:
public class Test {
public static void main(String...args){
int a;
System.out.println(a);//編譯出錯 變數a沒有初始化
}
}
基本數據類型作為類成員變數,無論初始化與否都不會出錯。
作為函數代碼里的變數,無論什麼類型不初始化全部都會報錯。
比如下面這樣就不會報錯了
public class Test {
private int a;
public void print(){
System.out.println(a);
}
public static void main(String...args){
Test t = new Test();
t.print();
}
}
不過你要問的是什麼是初始化啊 哈哈 看最前面一點就行了 後面看著糊塗就先暫時不用管吧 學到後面的時候 你再回過頭來看 自然就懂了

⑺ java中哪些屬性需要顯示初始化

B. 局部變數 非局部變數(即普通成員變數,靜態成員變數)會在載入class文件的時候給一個默認值,但是局部變數不會(是虛擬機設計規范,即強制性要求),需要給一個初始值,可以是null
其他: A 公有屬性,即public屬性, 只能對成員變數修飾,所以還是變相說的成員變數
C protected 同A
D 參考B的解釋, 靜態變數只能是成員變數,會被初始化,會自動賦默認值

⑻ java中為什麼要為類的屬性初始化

你好,初始化可以使類一產生對象就擁有自身的屬性值。
比如創建一個人初始化他的名字,年齡等。
一創建人這個對象就擁有名字年齡等屬性值。
當然也可以不初始化,在需要的時候調用方法進行初始化。

如果滿意,請採納,謝謝。

⑼ java的屬性的初始化方法 是怎樣的

初始化就是在變數的後面附值。對於對象的初始化,一般是要用到關鍵字new,如果沒有學到對象的話,還是不用記的,這時的初始化還包含於實例化,但實例化還是有一種方法就是將變數或這方法用關鍵字static該它定義為靜態,這樣也是一種實例化的ff。如果聽不懂還是先不要急,只要知道是在變數後賦值就行

⑽ java中一個類的屬性何時初始化

我們知道一個類(class)要被使用必須經過裝載,連接,初始化這樣的過程。下面先對這三階段做一個簡單的描述,之後會結合一個簡單的例子來說明java中類的初始化過程。

在裝載階段,類裝載器(Bootstrap ClassLoader 或者用戶自定義的ClassLoader) 把編譯形成的class文件載入內存,創建類相關的Class對象,這個Class對象封裝了我們要使用的類的類型信息。

連接階段又可以分為三個子步驟:驗證、准備和解析。
驗證就是要確保java類型數據格式 的正確性,並適於JVM使用。
准備階段,JVM為靜態變數分配內存空間,並設置默認值,注意,這里是設置默認值,比如說int型的變數會被賦予默認值0 。在這個階段,JVM可能還會為一些數據結構分配內存,目的 是提高運行程序的性能,比如說方法表。
解析過程就是在類型的常量池中尋找類、介面、欄位和方法的符號引用,把這些符號引用替換成直接引用。這個階段可以被推遲到初始化之後,當程序運行的過程中真正使用某個符號引用的時候 再去解析它。

類會在首次被「主動使用」時執行初始化,為類(靜態)變數賦予正確的初始值。在Java代碼中,一個正確的初始值是通過類變數初始化語句或者靜態初始化塊給出的。而我們這里所說的主動使用 包括:
1. 創建類的實例
2. 調用類的靜態方法
3. 使用類的非常量靜態欄位
4. 調用Java API中的某些反射方法
5. 初始化某個類的子類
6. 含有main()方法的類啟動時

初始化一個類包括兩個步驟:
1、 如果類存在直接父類的話,且直接父類還沒有被初始化,則先初始化其直接父類
2、 如果類存在一個初始化方法,就執行此方法
註:初始化介面並不需要初始化它的父介面。
追問
你這不是初始化實例么

熱點內容
sql資料庫項目 發布:2025-07-20 14:06:11 瀏覽:162
linux查看selinux狀態 發布:2025-07-20 13:36:35 瀏覽:914
福利資源解壓密碼 發布:2025-07-20 13:34:10 瀏覽:269
我的世界怎麼在手機搞伺服器 發布:2025-07-20 13:26:07 瀏覽:905
android系統鍵盤 發布:2025-07-20 13:19:38 瀏覽:500
程序化交易演算法 發布:2025-07-20 13:09:58 瀏覽:973
已關閉伺服器是什麼意思 發布:2025-07-20 13:06:49 瀏覽:709
三星s5密碼多少錢 發布:2025-07-20 12:55:14 瀏覽:961
密碼忘記了怎麼找回 發布:2025-07-20 12:46:18 瀏覽:534
華為的密碼鎖為什麼開不了 發布:2025-07-20 12:45:35 瀏覽:133