为什么Java不允许在类外部初始化变量或常量?

spa*_*ffy 3 java variables global initialization constants

示例代码:

public class MyClass {

    public static double globallyVisibleDbl = 42.69;
    public static final int globallyVisibleInt = 42;
    //blah blah rest of code

}
Run Code Online (Sandbox Code Playgroud)

并且在一个类中都有双精度类型的变量和常量。

但是,当我尝试将这两个外部类放到类之前(例如,在类之前和导入语句之后)时,就像在C或C ++中由于#define token [value]指令允许的那样,我得到了错误:

import com.something.*;

public static double globallyVisibleDbl = 42.69;
public static final int globallyVisibleInt = 42;

public class MyClass {
   //some code
}
Run Code Online (Sandbox Code Playgroud)

为什么会这样呢?

The*_*uck 5

因为在Java中没有“全局范围”。所有变量必须在方法或类中声明。当您在类声明上方声明变量时,java不会仅仅因为它在同一文件中就将它与该类相关联。