程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 關於java中普通代碼塊、構造代碼塊與靜態代碼塊,java構造代碼靜態

關於java中普通代碼塊、構造代碼塊與靜態代碼塊,java構造代碼靜態

編輯:JAVA綜合教程

關於java中普通代碼塊、構造代碼塊與靜態代碼塊,java構造代碼靜態


1.普通代碼塊

public static void main(String[] args) {
/*普通代碼塊:
*直接定義在在方法或語句中出現”{普通代碼的執行語句}“的就稱為普通代碼塊。
*普通代碼塊執行順序由他們在代碼中出現的次序決定--“先出現先執行”
* */
{
  System.out.println("這裡是普通代碼塊A");
}
//new A();
{
  System.out.println("這裡是普通代碼塊B");
}
}

執行結果:這裡是普通代碼塊A
     這裡是普通代碼塊B

2.靜態代碼塊與構造代碼塊

在java中使用static關鍵字聲明的代碼塊。常用於對類的初始化,每個靜態代碼塊只會執行一次(類在內存中加載時執行,類在內存中加載後類已經存在)由於JVM在加載類時會執行靜態代碼塊,所以靜態代碼塊先於主方法執行。如果類中包含多個靜態代碼塊,那麼將按照"先定義的代碼先執行,後定義的代碼後執行。

ps:1 靜態代碼塊不能存在於任何方法體內。2 靜態代碼塊不能直接訪問靜態實例變量和實例方法,需要通過類的實例對象來訪問。
構造塊:直接在類中定義且沒有加static關鍵字的代碼塊稱為{}構造代碼塊。構造代碼塊在創建對象時被調用,每次創建對象都會被調用,並且構造代碼塊的執行次序優先於類構造函數。

public class structure {
{
System.out.println("這裡是普通代碼塊");//所有類中有一個默認的構造函數,這裡的代碼塊為構造代碼塊,在類中的對象被創建時執行
}
public static void main(String[] args) {

/*普通代碼塊:
*直接定義在在方法或語句中出現”{普通代碼的執行語句}“的就稱為普通代碼塊。
*普通代碼塊執行順序由他們在代碼中出現的次序決定--“先出現先執行”
* */
{
System.out.println("這裡是普通代碼塊A");
}
new structure();//第二次類加載時靜態代碼塊不執行
//new A();
{
System.out.println("這裡是普通代碼塊B");
}
}

static{
System.out.println("這裡是靜態代碼塊");
}
}

執行結果:

這裡是靜態代碼塊//優先於主函數
這裡是普通代碼塊A
這裡是普通代碼塊//類中的對象被創建時執行,每創建一次執行一次,在加一句new structure(); 執行結果為:              

這裡是普通代碼塊B

3.概要總結

public class structure {
{
System.out.println("這裡是普通代碼塊");
}
public static void main(String[] args) {
{
System.out.println("這裡是普通代碼塊A");
}
//new structure();
//new structure();
new A();
{
System.out.println("這裡是普通代碼塊B");
}
}
static{
System.out.println("這裡是靜態代碼塊");
}
}
class A{
static{
System.out.println("這裡是A中的普靜態代碼塊1");
}
{
System.out.println("這裡是A中的普通代碼塊1");
}
{
System.out.println("這裡是A中的普通代碼塊2");
}

}

執行結果:

這裡是靜態代碼塊
這裡是普通代碼塊A
這裡是A中的普靜態代碼塊1
這裡是A中的普通代碼塊1
這裡是A中的普通代碼塊2
這裡是普通代碼塊B

優先級總結:靜態代碼塊>Main()>構造代碼塊

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved