0
A
回答
4
這是一個static
塊。它在您的代碼中第一次引用類時執行,並且它調用一個名爲foo()
的靜態方法。你可以找到更多關於靜態塊here的信息。正如@CommonsWare提到的,你可以用兩種不同的方式初始化靜態字段,內聯聲明時
static ArrayList<String> test = new ArrayList<String>() {{
add("A");
add("B");
add("C");
}};
但你可以看到它是不容易閱讀。如果您使用靜態塊,而不是
static ArrayList<String> test;
static {
test = new ArrayList<>();
test.add("a");
test.add("b");
test.add("c");
}
或在你的問題有
static ArrayList<String> test;
static {
foo();
}
private static void foo() {
test = new ArrayList<>();
test.add("a");
test.add("b");
test.add("c");
}
2
類的靜態成員意味着它可以在不具有可變的實例調用。
例如
class my_class
{
static void my_static_function()
{
// whatever
}
}
你可以把它在兩個方面:
my_class::my_static_function();
my_class m;
m.my_static_function();
2
這是一個靜態初始化塊,這是用於初始化靜態變量。這些在一個類的生命中運行一次(不是每次創建實例時)。例如,您可能希望以通常無法完成的方式填充靜態數據結構。
還有非靜態初始化塊。每次創建實例時都會運行它們。它們通常用於初始化匿名類的變量。知道這些在構造函數之前執行是很有用的。
class BlockTest {
static {
System.out.println("Static block.");
}
{
System.out.println("Non-static block.");
}
public BlockTest() {
System.out.println("Constructor.");
}
public static void main(String[] args) {
new BlockTest();
}
}
此代碼將輸出以下內容:
Static block.
Non-static block.
Constructor.
相關問題
- 1. 以爲我明白靜態類
- 2. 安卓:LayoutInflater靜態方法
- 3. 安卓:我不明白,從將String.valueOf(Time.setToNow)值
- 4. 安卓:如何聲明靜態廣播接收機
- 5. 安卓:調用從靜態的Handler類
- 6. 安卓:靜態的ArrayList在服務
- 7. 靜態編譯一個安卓程序
- 8. 刪除靜態varialble安卓服務
- 9. 我不明白
- 10. 我不明白如何安裝組件
- 11. 我不明白的狀態碼 - 302/200
- 12. options.fetch。我不明白
- 13. Random.Next - 我不明白
- 14. 我不明白ifstream
- 15. NullPointerException - 我不明白
- 16. 我不明白ptr_fun
- 17. 我不明白struct.unpack
- 18. 安卓:白色上的白色微調
- 19. 安卓相機(froyo)不包含靜態方法open()
- 20. 安卓,圖庫視圖不顯示我的靜態圖像和崩潰
- 21. 靜態變量php測試功能不明白錯誤機制
- 22. JQuery Ajax表單提交仍然是靜態的,我不明白爲什麼!
- 23. 安卓:靜態變量和動態複雜的數據
- 24. 安卓:我不能讓collapseActionView
- 25. 安卓活動透明度
- 26. 安卓對話透明
- 27. 安卓:ArrayList的聲明
- 28. 我不明白 「外部」
- 29. 我不明白的Windows IRQL
- 30. 我不明白DataSource和DataContextProxy