❶ java對類中的成員變數進行初始化有哪些方法
直接賦值, 構造參數賦值 ,static 代碼塊內部初始化。
❷ Java類變數的初始化是在( )階段。 A. 該類實例化對象 B. 該類載入 C. 該類首次調用 D. 該類對象銷毀
選B :
類變數也就是靜態變數,在類創建(載入)的時候初始化,所有實例共用同樣的靜態變數,如果在一個地方改變了靜態變數的值,在其他地方看到的就是被改變之後的值。
調用時通過類本身調用,不用實例化對象就可以使用。
這和實例變數是不同的,實例變數只在該實例有效,修改了對其他實例沒影響,實例化變數要實例化出對象才可以使用。
❸ 昆明Java培訓:為什麼Java中的局部變數必須要初始化
現在假如你是java語言的開發者,你已經將對象保存在了堆內存中,而將局部變數保存在了棧內存中,你會怎麼做呢?Java中的變數分為類變數,成員變數和局部變數,分別位於JVM的方法區、堆內存和棧內存中。 ❹ java中成員或類變數自動初始化是什麼意思
成員變數相當於你的名字,出生就有,如果你父母來不及取,默認是寶寶。局部變數相當於你在公司或者學校的外號,進公司或學校才有,出了公司和學校就沒了,而如果沒有人給你取外號,那麼你就沒有外號,沒有默認值。 ❺ Java 變數的初始化疑惑,請各位大俠詳細解釋下,越底層越好。謝謝!
變數分成員變數和局部變數 ❻ java中構造方法可以初始化類變數嗎
可以。 ❼ JAVA里初始化是什麼意思 初始化就是給變數一個初始值。 例如: 聲明一個變數:String aa = "abc";int cc =0;其中abc和0就是初始化的值,最後值不一定是abc或者 0加入你覆蓋了aa的值如下: aa = "def" ; cc=1;那最後aa變數的值就是def,cc變數就是1了,初始化的目的是為了讓變數有值,防止使用時出現異常。 作用 1、遇到new,getstatic,putstatic,或invokestatic這4條位元組碼指令時,如果類沒有進行過初始化,則需要先觸發其初始化。生成這四條指令單最常見的Java代碼場景是: 使用new關鍵字實例化對象的時候,讀取或設置一個類的靜態欄位(被final修飾,已在變異期把結果放入常量池的靜態欄位除外)的時候,以及調用一個類的靜態方法的時候。 2、使用java.lang.reflect包的方法對類進行反射調用的時候,如果類沒有進行過初始化,則需要先出法其初始化。 3、當初始化一個類的時候,如果發現其父類還沒有進行初始化,則需要先出法其父類的初始化。 4、當虛擬機啟動時,用戶需要指定一個要執行的主類(包含main()方法的那個類),虛擬機會先初始化這個主類。 ❽ JAVA中的變數為什麼要初始化呢
為了給變數分配空間。不分配空間無法對變數操作。 ❾ 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中怎麼給變數初始化 不同的變數初始化方法不同。 變數包括: 類的屬性,或者叫值域 方法里的局部變數 方法的參數 對於第一種變數,Java虛擬機會自動進行初始化。如果給出了初始值,則初始化為該初始值。如果沒有給出,則把它初始化為該類型變數的默認初始值。 對於兩種不同的類屬性,static屬性與instance屬性,初始化的時機是不同的。instance屬性在創建實例的時候初始化,static屬性 對於第二種變數,必須明確地進行初始化。如果再沒有初始化之前就試圖使用它,編譯器會抗議。如果初始化的語句在try塊中或if塊中,也必須要讓它在第一
類變數和成員變數都可以在類首次載入和類初始化時,給出默認值,但是局部變數就必須要在使用前賦值。
事實上,就有這樣的語言,比如C++。
當然,C++不強制必須初始化,不代表就不用初始化,實際上,C++開發者也都是建議對局部變數初始化,以防止出現野指針這類事情。
其實,不管是局部變數還是成員變數,都是必須要初始化的,那為什麼成員變數會自動初始化?其實正是因為成員變數屬於對象,而對象是保存在堆中的,所以jvm就在初始化類的時候把成員變數初始化呢,而如果我們在調用方法的時候,還要jvm去將局部變數也進行初始化,是不是對會影響到性能呢?因此,直接強制局部變數必須要初始化反而更好。
成員變數在類存在的時候就已經初始化了,局部變數只有該方法被調用的時候才初始化。局部變數一定要賦初值,否則報錯,成員變數如果不賦初值,系統默認給。
成員變數是在類范圍內定義的變數,也就是類的屬性。局部變數是在方法內定義的變數。
成員變數分:實例屬性(不用static修飾),類屬性(用static修飾)
局部變數分:形參(方法簽名中定義的變數),方法局部變數(方法內定義的變數),代碼塊局部變數(代碼塊如for
while等內部的變數)。
類屬性從類被創建到類被銷毀,與類的生存范圍相同。
實例屬性從類的實例創建開始到實例被銷毀,與該實例生存范圍相同。
成員變數時無需顯示初始化的,系統在創建該類或實例的時候會進行默認初始化。
而局部變數中除形參外,都必須初始化。
您可以使用最終方法,構造函數或實例初始化塊來初始化類的實例變數。
(7)java類變數的初始化擴展閱讀:
在java中全局變數不需要初始化,局部變數必須初始化。
int類型變數默認初始值為0
float類型變數默認初始值為0.0f
double類型變數默認初始值為0.0
boolean類型變數默認初始值為false
char類型變數默認初始值為0(ASCII碼)
long類型變數默認初始值為0
所有對象引用類型變數默認初始值為null,即不指向任何對象。注意數組本身也是對象,所以沒有初始化的數組引用在自動初始化後其值也是null。
在類載入,也就是第一次用到這個類的時候初始化,對於後來的實例的創建,不再次進行初始化。這個問題會在以後的系列中進行詳細討論。
次使用前一定能夠得到賦值。也就是說,把初始化語句放在只有if塊的條件判斷語句中編譯器也會抗議,因為執行的時候可能不符合if後面的判斷條件,如此一
來初始化語句就不會被執行了,這就違反了局部變數使用前必須初始化的規定。但如果在else塊中也有初始化語句,就可以通過編譯,因為無論如何,總有至少
一條初始化語句會被執行,不會發生使用前未被初始化的事情。對於try-catch也是一樣,如果只有在try塊里才有初始化語句,編譯部通過。如果在
catch或finally里也有,則可以通過編譯。總之,要保證局部變數在使用之前一定被初始化了。所以,一個好的做法是在聲明他們的時候就初始化他
們,如果不知道要出事化成什麼值好,就用上面的默認值吧!
其實第三種變數和第二種本質上是一樣的,都是方法中的局部變數。只不過作為參數,肯定是被初始化過的,傳入的值就是初始值,所以不需要初始化。