Java中的普通程式碼塊、構造塊、靜態程式碼塊
阿新 • • 發佈:2018-12-16
程式碼塊
程式碼塊定義:使用“{}”定義的一段程式碼。 根據程式碼塊定義的位置以及關鍵字,又可分為以下四種:
- 普通程式碼塊
- 構造塊
- 靜態塊
- 同步程式碼塊
1.1 普通程式碼塊
普通程式碼塊:定義在方法中的程式碼塊。 範例:觀察普通程式碼塊
public class Test1{
public static void main(String[] args)
{
{
//普通程式碼塊
int a=20;
System.out.println(a);
}
int a=10;
System.out.println(a);
}
}
一般如果方法中程式碼過長,為避免變數重名,使用普通程式碼塊。 程式碼是否可以這樣寫????:
public class Test1{
public static void main(String[] args)
{
int a=10;
{
//普通程式碼塊
int a=20;
System.out.println(a);
}
System.out.println (a);
}
}
不可以!!! 寫程式碼時要注意變數作用域的問題!!!!
1.2 構造塊
構造塊: 定義在類中的程式碼塊(不加修飾符) 範例:觀察構造塊:
class Person{
//定義在類中,不加任何修飾符
{
System.out.println("Person類的構造塊!");
}
//建構函式
public Person(){
System.out.println("Person類的建構函式!");
}
}
public class Test1{
public static void main(String[] args)
{
new Person();
new Person();
}
}
通過上述程式碼我們發現:構造塊優先於構造方法執行,每產生一個新的物件就呼叫一次構造塊。 所以構造塊可以進行簡單的邏輯操作(在呼叫構造方法之前)。
1.3 靜態程式碼塊
靜態程式碼塊: 使用static定義的程式碼塊。 根據靜態塊所在的類不同又可分為以下兩種型別:
- 在非主類中
- 在主類中
1.3.1 在非主類中的靜態程式碼塊
範例:非主類中的靜態程式碼塊:
class Person{
//構造塊
{
System.out.println("Person類的構造塊!");
}
//建構函式
public Person(){
System.out.println("Person類的建構函式!");
}
//靜態塊
static
{
System.out.println("Person類的靜態程式碼塊!");
}
}
public class Test1{
public static void main(String[] args)
{
System.out.println("*******start*********");
new Person();
new Person();
System.out.println("*********end*********");
}
}
通過以上程式碼,我們可以發現:
- 在非主類中的靜態塊,在類載入時執行,優先於構造塊執行。
- 無論產生多少例項化物件,靜態塊都只執行一次。 靜態塊的主要作用是為static屬性進行初始化!!!!!
1.3.2 在主類中的靜態程式碼塊
範例:主類中的靜態程式碼塊:
public class Test1{
//構造塊
{
System.out.println("Test1類的構造塊!");
}
//建構函式
public Test1(){
System.out.println("Test1類的建構函式!");
}
//靜態塊
static
{
System.out.println("Test1類的靜態程式碼塊!");
}
public static void main(String[] args)
{
System.out.println("*******start*********");
new Test1();
new Test1();
System.out.println("*********end*********");
}
}
在主類中定義的靜態塊,優先於主方法(main)執行!!