
代碼塊
1:普通代碼塊:直接定義在方法中的代碼
public class MainDemo01 { public static void main(String args[]){ { int c = 40; System.out.println(c); } int c =100; System.out.println(c); } }
輸出為:
F:\java>javac MainDemo01.java
F:\java>java MainDemo01 one
40
100
2:構造代碼塊:直接定義在類中的代碼
class Demo { { System.out.println("構造塊"); } public Demo(){ System.out.println("構造方法"); } } public class MainDemo01 { public static void main(String args[]){ new Demo(); new Demo(); new Demo(); new Demo(); new Demo(); } }
輸出為:
F:\java>java MainDemo01
構造塊
構造方法
構造塊
構造方法
構造塊
構造方法
構造塊
構造方法
構造塊
構造方法
構造塊優于構造方法執行,執行多次。
3:靜態代碼塊:直接使用static關鍵字聲明的代碼
class Demo { { System.out.println("構造塊"); } static { System.out.println("靜態代碼塊"); } public Demo(){ System.out.println("構造方法"); } } public class MainDemo01 { static{ System.out.println("在主方法中定義的代碼塊"); } public static void main(String args[]){ new Demo(); new Demo(); new Demo(); new Demo(); new Demo(); } }
輸出為:
F:\java>java MainDemo01
在主方法中定義的代碼塊
靜態代碼塊
構造塊
構造方法
構造塊
構造方法
構造塊
構造方法
構造塊
構造方法
構造塊
構造方法
得出結論;
1:靜態塊優先于主方法執行,如果在普通類中定義的靜態塊,優先于構造塊執行,不管有多少實例化對象產生,靜態代碼塊只執行一次,靜態代碼塊的主要功能是為靜態屬性初始化。
能不能不使用主方法就輸出“helloworld”呢?
答案是可以的。
public class MainDemo01 { static{ System.out.println("helloworld"); } }
輸出為:
F:\java>java MainDemo01
helloworld
Exception in thread "main" java.lang.NoSuchMethodError: main
可以輸出,但是出現錯誤,程序仍然繼續尋找主方法,能不能去掉這個錯誤呢》
答案是可以的
public class MainDemo01 { static{ System.out.println("helloworld"); System.exit(1); } }
輸出為:
F:\java>java MainDemo01
helloworld
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
