亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

對靜態初始化塊和普通初始化塊的運行問題。

public?class?Demo1{
?int?a;
?static{
?a=1;
?System.out.println("通過靜態初始化塊為變量a賦值:"+a);
?}
?public?static?void?main(String[]?args){
?}
}
運行結果:
通過靜態初始化塊為變量a賦值:1
問題:我在main方法里什么都沒有聲明和調用,系統怎么就可以運行該靜態初始化塊呢?
public?class?Demo2{
?int?b;
?int?c;
?public?Demo2{
??b=7;
??System.out.println("通過構造方法為變量b賦值:"+b);
?}
?{
???c=9;
???System.out.println("通過初始化塊為變量c賦值:"+c);
?}
?public?static?void?main(Sting[]?args){
??Demo2?hello2=new?Demo2();
?}
}
運行結果:
通過初始化塊為變量c賦值:9
通過構造方法為變量b賦值:7
問題:在main方法中我只調用了構造方法,為什么普通初始化塊也會運行呢?從哪里運行的呢?望高手解答,謝謝!


正在回答

3 回答

靜態初始化代碼塊在 .class字節碼加載進內存時,就開始運行了。

普通初始化塊先于構造方法執行。


0 回復 有任何疑惑可以回復我~

靜態代碼塊 > 構造代碼塊 > 構造方法

0 回復 有任何疑惑可以回復我~

第16行構造方法少寫了()

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Java入門第二季 升級版
  • 參與學習       531142    人
  • 解答問題       6326    個

課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙

進入課程

對靜態初始化塊和普通初始化塊的運行問題。

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號