Java声明一个变量,然后初始化它。? 在上面的例子中,为什么我不能声明一个变量“j”,然后直接在类下初始化呢 我可以在静态/实例初始化块下以相同的方式声明并初始化 区别在于,我知道Java不支持声明然后初始化实例变量。这背后的原因是什么

Java声明一个变量,然后初始化它。? 在上面的例子中,为什么我不能声明一个变量“j”,然后直接在类下初始化呢 我可以在静态/实例初始化块下以相同的方式声明并初始化 区别在于,我知道Java不支持声明然后初始化实例变量。这背后的原因是什么,java,Java,在正常情况下,在声明变量之前不能使用它。所以 public class TestVariableDeclaration{ int j; // ERROR j=45; // ERROR static{ int k; k=24; } { int l; l=25; } void local(){ int loc; loc=55;

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

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

    static{
        int k;
        k=24;

    }

    {

        int l;
        l=25;
    }

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

}
由于
j
尚未声明,顶部将失败

除非我不明白你的问题,否则这是非常可能的:

j=45; 
或者更简洁地说:

class SomeClass {
    int j; // declare it
    {
        j=45; // initialize it
    }
}
  • 可以在类级别声明int j=45;如Subhrajyoti Majumder所述
  • k在一个特殊的函数/方法中,称之为静态初始值设定项。它在类加载时执行。k仅在该方法中已知
  • l是在类实例化时执行的特殊方法中。只有在这种方法中才知道l 这是非常基本的java内容


    (编辑:输入错误)

    为什么不简单地初始化并像这样一起声明->
    intj=45?对我来说就是这样的。

    编译器不够聪明
    intj=45你可以在去极化时进行初始化。我可以知道为什么不可能进行变量的声明和初始化吗?因为在你写
    j=45的位置只允许声明,不允许语句。
    
    class SomeClass {
        int j = 45; // declare and initialize
    }