http://blog.csdn.net/watermusicyes/article/details/7749712
局部代碼塊:
作用:控制變量的生命週期;
在程序中,當我們已經使用完 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");
-
}
-
}