我在理解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) –