1. 程式人生 > >static靜態程式碼塊中給靜態成員變數賦值坑

static靜態程式碼塊中給靜態成員變數賦值坑

public class testdemo {
    private static final String name;

    static {
        name = "string";
        try {
//           name="string";
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        System.out.println(name);
    }
}

先看上述程式碼,是可以直接執行無異常的,但習慣的是將try...catch...範圍擴大,進而將name="string"也寫入try中

但編譯器就會認為這段程式碼會發生異常,從而沒有將name進行賦值,會提示name需要初始化,這是一個坑