我在理解java中的任何語句都應該在代碼塊中。 但我在下面的代碼中看到System.getenv();不在代碼塊中。但是如果我在它下面放置一個System.out.println(),編譯器會抱怨。 System.getenv()在這裏被視爲聲明而不是聲明?Java系統的外部代碼塊
package gov.ssa.epa;
public class AdvJ {
private static final Map<String, String> INVALID_FILTER_KEY = System.getenv();
System.out.println("hello");
public static void main(String[] args) {
}
該類型的靜態分配是合法的。它與'private static int x = 5;'沒有什麼不同;'任何給定的任意語句可能都不會。 – CollinD
內聯初始化允許在代碼塊之外,但是'System.out.println(「hello」);'不是初始化語句 – JonK
[Java™教程:初始化字段](https://docs.oracle.com /javase/tutorial/java/javaOO/initial.html) –