局部代碼塊:
作用:控制變量的生命周期;
在程序中,當我們已經使用完 x 后,並且在接下來的代碼中,不會再用到x,那么就沒必要讓x 在內存中占用空間了,這用情況下,可以使用 局部代碼塊,將x及其所設計到的區域封裝為局部代碼塊,他們在程序執行中順序不變,只是在執行完成后消失。
表現形式,以代碼體現如下:
class TestDemo { public static void main(String[] args) { { int x = 9; System.out.println(x); } System.out.println("Hello World !"); } }
構造代碼塊:
作用:它可以給所有對象進行初始化
存在於:類中。
當類中的構造方法以重載的形式存在時,並且有共同成員變量或共同的方法時,可以通過構造代碼塊對其進行初始化;這樣可以減少代碼的重復!
class Person { private String name; private int age; { System.out.println("cons code run !"); } Person() // 給對應的對象進行初始化 { System.out.println("Person Now:RUN !"); System.out.println("eat————"); } Person (String name , int age) { this.name = name ; this.age= age; System.out.println(this.name + "————" + this.age); System.out.println("eat————"); } } class ConsCodeDemo { public static void main(String[] args) { Person p = new Person(); Person p1 = new Person("LiSi" , 23); } }
我們可以看到類Person中 重載的構造方法中有共同的代碼System.out.println("eat————");我們可以將他封裝進構造代碼塊,用來給各種進行初始化。
優化后,代碼體現為:
class Person { private String name; private int age; { System.out.println("cons code run !"); eat(); } Person() // 給對應的對象進行初始化 { System.out.println("Person Now:RUN !"); } Person (String name , int age) { this.name = name ; this.age= age; System.out.println(this.name + "————" + this.age); } public void eat() { System.out.println("eat————"); } } class ConsCodeDemo { public static void main(String[] args) { Person p = new Person(); Person p1 = new Person("LiSi" , 23); } }
靜態代碼塊:
特點:
1. 隨着類的加載而執行,而且只一次。
2. 優先於主函數執行。
作用:給類進行初始化。
當類中的方法都被靜態了化,並且構造方法被private了,這是我們不能,在將這個類實例化,然而又想讓類增加一些屬性,就可以使用靜態代碼塊:
表現形式,以代碼體現如下:
class StaticCode { static { System.out.println("A"); } public void show() { System.out.println("Hello World !"); } } class StaticCodeDemo { static { System.out.println("B"); } public static void main(String[] args) { new StaticCode().show(); } static { System.out.println("C"); } }