2
public class TestVariableDeclaration{
    int j;  // ERROR
    j=45;   // ERROR

    static{
        int k;
        k=24;

    }

    {

        int l;
        l=25;
    }

    void local(){
        int loc;
        loc=55;
    }

}
  1. 在上面为什么我不能声明一个变量“j”然后在一个类下直接初始化
  2. 我可以在方法、静态/实例初始化块下以相同的方式声明然后初始化吗?
  3. 有什么区别,我知道 Java 不支持声明然后初始化实例变量这一事实。这背后的原因是什么??
4

3 回答 3

2
  1. 您可以使用 int j = 45 在类级别声明;如 Subhrajyoti Majumder 所述
  2. k 在一个特殊的函数/方法中,称之为静态初始化器。它在加载类时执行。k 仅在此方法内部已知
  3. l 在类实例化时执行的特殊方法中。l 仅在此方法中已知。

这是非常基本的java东西。

(编辑:错别字)

于 2013-10-08T07:12:29.140 回答
0

在正常情况下,您不能在声明变量之前使用它。所以

j=45; 

在顶部将失败,因为j尚未声明。

除非我没有收到您的问题,否则这很有可能:

class SomeClass {
    int j; // declare it
    {
        j=45; // initialize it
    }
}

或者更简洁:

class SomeClass {
    int j = 45; // declare and initialize
}
于 2013-10-08T07:12:18.453 回答
0

为什么不像这样简单地初始化并声明它 -> int j=45;?它对我有用..

于 2013-10-08T07:13:34.130 回答