为什么实例变量不能在类中初始化?

时间:2019-02-07 09:16:55

标签: java

这是我的代码:

required

subscriptionTier1行为什么会出错?

4 个答案:

答案 0 :(得分:2)

如果您想为变量x赋值, 该行初始化后,应将其放置在下面的特定方法中。 您打算这样做吗?

public class MyClass
{
    int x;  

    public static void main(String[] args)
    {
        MyClass m1 = new MyClass();
        m1.x = 10;
    }
}

答案 1 :(得分:0)

您的代码中有两个错误:

MyClass m1 = new MyClass();

这是无限递归。

m1.x=10;

这是一条语句,因此应该在方法或构造函数中,而不是类主体中。

答案 2 :(得分:0)

这里的问题是代码m1.x=10; 此行显示的操作或行为仅在代码的内是允许的。

此操作的有效代码。

public class MyClass {
    int x;

    public void assignOperation() {
        this.x = 10;
    }

    public static void main( String[] args ) {
        MyClass myClass = new MyClass();
        myClass.assignOperation();

        System.out.println( "Assigned value is " + this.x )
    }
}

方法之外但在类体内的另一个有效示例是:

public class MyClass {
    static int x;

    static {
        x = 10;
    }

    public static void main( String[] args ) {
        System.out.println( "Assigned value is " + x )
    }
}

使变量 x 为静态不需要我们初始化类 MyClass 的对象。

答案 3 :(得分:0)

使用实例初始化块:

public class MyClass {
    int x;    // define x variable
    MyClass m1 = new MyClass();    // initialize m1 variable
    {
        m1.x=10;    // assign 10 to m1.x (this is assignment statement)
    }
}

首先,您只能定义和初始化变量,而不能执行赋值语句。