程式碼塊(區域性程式碼塊,靜態程式碼塊,構造程式碼塊)
1什麼是程式碼塊??
答:程式碼塊:在Java中用{}括起來的內容.
2:程式碼塊的分類!
(1)區域性程式碼塊
在類的區域性位置 作用:限定當前變數的宣告週期
*變數x在類中只使用一次, 用一個區域性程式碼塊,是為了在程式碼塊結束後,記憶體自動釋放,減少記憶體的使用
是順序執行的,只是在執行結束後,立即消失。*
main(..){
{
int x;
x = 10;
System.out.println(x) ;
}
}
(2)構造程式碼塊
在類的成員位置
特點:每次在執行構造方法之前,如果當前類中有構造程式碼塊,優先執行構造程式碼塊,然後在執行構造方法!
作用:可以多個構造方法中共性程式碼可以放到構造程式碼中,物件初始化
//構造塊:直接在類中定義且沒有加static關鍵字的程式碼塊稱為{}構造程式碼塊。構造程式碼塊在建立物件時被呼叫,每次建立物件都會被呼叫,並且構造程式碼塊的執行次序優先於類建構函式。
public class Demo1{
{
System.out.println(“第一程式碼塊”);
}
public Demo1(){
System.out.println(“構造方法”);
}
{
System.out.println(“第二構造塊”);
}
public static void main(String[] args){
new Demo1();
new Demo1();
new Demo1();
}
}
/*
*
執行結果:
第一程式碼塊
第二構造塊
構造方法
第一程式碼塊
第二構造塊
構造方法
第一程式碼塊
第二構造塊
構造方法
*/
(3) 靜態程式碼塊
靜態程式碼塊:在java中使用static關鍵字宣告的程式碼塊。靜態塊用於初始化類,為類的屬性初始化。每個靜態程式碼塊只會執行一次。由於JVM在載入類時會執行靜態程式碼塊,所以靜態程式碼塊先於主方法執行。
//如果類中包含多個靜態程式碼塊,那麼將按照”先定義的程式碼先執行,後定義的程式碼後執行”。
//注意:1 靜態程式碼塊不能存在於任何方法體內。2 靜態程式碼塊不能直接訪問靜態例項變數和例項方法,需要通過類的例項物件來訪問。
在類的成員位置:
static{
}
特點:只執行一次,被static修飾的,都和類有關係!
class Code{
{
System.out.println(“Code的構造塊”);
}
static{
System.out.println(“Code的靜態程式碼塊”);
}
public Code(){
System.out.println(“Code的構造方法”);
}
}
public class Code1{
{
System.out.println(“Code1的構造塊”);
}
static{
System.out.println(“Code1的靜態程式碼塊”);
}
public Code1(){
System.out.println(“Code1的構造方法”);
}
public static void main(String[] args){
System.out.println(“Code1的主方法”);
new Code();
new Code();
new Code1();
new Code1();
}
}
/*
Code1的靜態程式碼塊
Code1的主方法
Code的靜態程式碼塊
Code的構造塊
Code的構造方法
Code的構造塊
Code的構造方法
Code1的構造塊
Code1的構造方法
Code1的構造塊
Code1的構造方法
*/
3:關於構造程式碼塊,靜態程式碼塊,構造方法之間的優先順序?
靜態程式碼塊>構造程式碼塊>構造方法