當前位置:首頁 » 編程語言 » java初始化順序

java初始化順序

發布時間: 2022-10-07 00:35:41

A. java 先初始化和賦值

Java在變數初始化是按照變數的定義順序進行先後初始化的。先定義的變數不能使用後定義的變數進行初始化,因為此時後定義的變數還沒有初始化,如果直接使用後定義的變數進行初始化,編譯時會有錯誤,但是有一種方法可以使用後定義的變數初始化先定義的變數,那就是使用靜態函數。
見代碼:
public class StaticInit {

public static void main(String[] args) {
Test test = new Test();
}
}

class Test {
static Class1 class1 = new Class1(getName());
static Class2 class2 = new Class2();
static String getName()
{
return class2.getName();
}
}

class Class1 {
String name = "class1";

public Class1() {
System.out.println(name);
}

public Class1(String name1) {
System.out.println(name1 + name);
}

}

class Class2 {
String name = "class2";

public Class2() {
System.out.println(name);
}
public Class2(String name2) {
if(name2 == null)
System.out.println("NULL"+name);
else
System.out.println(name2+name);
}

public String getName() {
return name;
}
}

B. Java 構造方法初始化順序

初始化子類,調用子類有參的時候默認情況下也是先去調用父類的無參構造,除非你在子類的構造方法中使用super來指明調用父類中的哪個構造方法。

C. Java:類成員的初始化順序 類載入 疑問(如圖)

一段程序的完整執行過程是先編譯,然後載入到jvm,然後初始化,然後你才能使用(當然中間還有需要細節)。初始化是執行類構造器方法的過程,類構造器方法是由編譯器自動收集類中的所有類變數的賦值動作和靜態語句塊中的語句合並產生的(不是類的構造方法)。所以,簡而言之,一個類在初始化的時候,會先執行它的靜態代碼塊,當然,如果這個類有父類的話,同樣的道理,如果發現該父類沒有初始化,則需要先對其父類進行初始化,再對該類進行初始化。
至於一個類在什麼時候初始化,簡單的說,當程序第一次用到這個類時候就會對其進行初始化(前提是其沒有進行過初始化)。

D. Java 繼承與初始化

因為是靜態方法。

JAVA初始化順序
1、調用順序:
JAVA類首次裝入時,會對靜態成員變數或方法進行一次初始化,但方法不被調用是不會執行的,靜態成員變數和靜態初始化塊級別相同,非靜態成員變數和非靜態初始化塊級別相同。
先初始化父類的靜態代碼--->初始化子類的靜態代碼-->
(創建實例時,如果不創建實例,則後面的不執行)初始化父類的非靜態代碼--->初始化父類構造函數--->初始化子類非靜態代碼--->初始化子類構造函數

其他說明:
2 、類只有在使用New調用創建的時候才會被JAVA類裝載器裝入
3、創建類實例時,首先按照父子繼承關系進行初始化
4、類實例創建時候,首先初始化塊部分先執行,然後是構造方法;然後從本類繼承的子類的初始化塊執行,最後是子類的構造方法
5、類消除時候,首先消除子類部分,再消除父類部分

E. 在Java中,成員變數和局部變數分別是什麼時候初始化,哪個順序在前跪求各位前輩指點

成員變數相當於你的名字,出生就有,如果你父母來不及取,默認是寶寶。局部變數相當於你在公司或者學校的外號,進公司或學校才有,出了公司和學校就沒了,而如果沒有人給你取外號,那麼你就沒有外號,沒有默認值。
成員變數在類存在的時候就已經初始化了,局部變數只有該方法被調用的時候才初始化。局部變數一定要賦初值,否則報錯,成員變數如果不賦初值,系統默認給。

F. 請問java構造函數如何初始化成員變數的啊

java構造函數如何初始化成員變數的方式如下:
初始化順序依據轉換後對應的class類成員變數的初始化順序依次執行,所以所有的靜態成員變數都是先聲明,後執行賦值的,而且賦值的順序也是依照源代碼對靜態成員變數初始化的順序進行的,注意:定義一個成員變數並直接初始化與在靜態代碼塊中進行初始化是等價的,都是依據它們在源代碼中定義的順序進行的。

G. java中創建對象了,顯示初始化值和構造函數初始化對象的區別先後執行順序是什麼

兩個都可以初始化值,本質上沒有區別,不同的是執行的先後。構造方法初始化值時需要包含有參的構造方法,創建對象時使用Object obj = new Object(arg1,arg2)的形式,你說的顯示初始化值應該是使用set方法吧,比如obj.setArg1(arg1)的形式。執行順序肯定是構造方法的形式要在前了,因為在對象創建之後就會給屬性賦值,而set方法形式賦值只會在你調用set方法時才會賦值。
再插一點題外話:其實在對象創建時成員變數已經初始化了,只是初始化的都是變數對應類型的默認值,比如int類型的默認值是0,引用類型默認值是null,boolean類型默認值是false。

H. Java程序初始化的順序是怎樣的

Java程序初始化工作可以在許多不同的代碼塊中來完成(例如靜態代碼塊,構造函數等),它們執行的順序如下:
父類靜態變數、父類靜態代碼塊、子類靜態變數、子類靜態代碼塊、父類非靜態變數、父類非靜態代碼塊、父類構造函數、子類非靜態變數、子類非靜態代碼塊、子類構造函數。

I. Java中類的初始化順序是什麼

執行順序應該是:首先是父類靜態塊 --> 然後是子類靜態塊 --> 父類自由塊 --> 父類構造函數塊 --> 子類自由塊 --> 子類構造函數塊

熱點內容
循跡小車演算法 發布:2024-12-22 22:28:41 瀏覽:82
scss一次編譯一直生成隨機數 發布:2024-12-22 22:04:24 瀏覽:956
嫁接睫毛加密 發布:2024-12-22 21:50:12 瀏覽:975
linuxbin文件的安裝 發布:2024-12-22 21:46:07 瀏覽:798
vlcforandroid下載 發布:2024-12-22 21:45:26 瀏覽:664
電腦做網關把數據發送至伺服器 發布:2024-12-22 21:44:50 瀏覽:432
新華三代理什麼牌子的伺服器 發布:2024-12-22 21:33:21 瀏覽:342
歡太會員密碼是什麼 發布:2024-12-22 20:57:28 瀏覽:74
sqllocaldb 發布:2024-12-22 20:07:08 瀏覽:126
如何找到我的伺服器 發布:2024-12-22 19:52:14 瀏覽:301