Java中主要有四種代碼塊:
一、普通代碼塊
直接在一個方法中出現的{}就稱爲普通代碼塊,例子程序如下:
public class CodeDemo01{
public static void main(String[] args){
//普通代碼塊
{
int x = 10;
System.out.println("x=" + x);
}
int x = 100;
System.out.println("x=" + x);
}
}
二、構造代碼塊
直接在類中定義的沒有加static關鍵字的代碼塊{}稱爲構造代碼塊,例子程序如下:
public class CodeDemo02{
public CodeDemo02(){
System.out.println("========這是構造方法=========");
}
//這是構造代碼塊,而且在new對象時,構造代碼塊優先構造方法執行
{
System.out.println("=========這是構造塊!=========");
}
public static void main(String[] args){
new CodeDemo02();
new CodeDemo02();
}
}
三、靜態代碼塊
使用static關鍵字聲明的代碼塊稱爲靜態代碼塊,靜態塊的主要目的是用來爲靜態屬性初始化,例子程序如下:
class Demo
{
static{
System.out.println("這是Demo類中的靜態代碼塊!");
}
{
System.out.println("這是Demo類中的構造塊!");
}
public Demo(){
System.out.println("這是構造方法!");
}
}
靜態塊優先於主方法的執行,靜態塊優先於構造方法的執行,而且只執行一次!詳情請見我的博文《Java中的static》
四、同步代碼塊
同步代碼塊主要出現在多線程中。例如:
class SellThread implements Runnable{
int ticket = 100;
Object obj = new Object();
public void run(){
while(true){
synchronized(obj){
if(ticket > 0){
ticket--;
}
}
}
}
}