尝试将值重新分配给类实例变量

时间:2014-02-27 19:57:22

标签: java class

我是初学者,正在尝试学习java基础知识,在这个程序中,我很困惑 我们无法重新分配类实例变量的值。enter image description here 这是该程序中的错误。请大家帮我解决一下。感谢

class AddInsideClassVar{
    int a = 3;
    int c;
    c = a + a;
    public static void main(String args[]){
        System.out.println();
    }
}

5 个答案:

答案 0 :(得分:2)

您可以在类中定义字段,但不允许将计算语句放在方法定义之外。字段声明的形式类型;或type = value;

例如(来自您的代码);

class AddInsideClassVar{
    static int a = 3;        // ok this is a declaration for a field (variable)
    static int c;            // ok, this is too
    //c = a + a;        // this is a statement and not a declaration. A field may be 
                      // declared only once
    static int d = a + a;    // this will work since it is part of a declaration.

    public static void main(String args[]){
        System.out.println("a=" + a + ", c=" + c + ", d=" + d);

    }
}

答案 1 :(得分:1)

您无法在该部分执行c = a + a。如果您需要做任何事情

int a = 3;
int c = a + a;  

如果你将这些变量设为静态,那么就可以

private static int a = 3;
private static int c;
static {
    c = a + a;
}

答案 2 :(得分:1)

你可以尝试这个(只是一个变通方法的例子):

class AddInsideClassVar{
    static {
        int a = 3;
        int c;
        c = a + a;
        System.out.println(c);
    }

    public static void main(String args[]){

    }
}

答案 3 :(得分:0)

说明:int c = a + a是声明,而“c = a + a;”(单独)是声明;你有一点,它没有多大意义;

class MyClass {
    int a = 3;
    int c = a + a; // Correct
}

class MyClass {
    int a = 3;
    int c;
    public void addition () {
        c = a + a; // Correct
    }
}

但不是

class MyClass {
 int a = 3;
 int c;
 c = a + a; // Incorrect
}

注意:另一方面,Scala编程语言(编译为JVM)允许您执行以下操作:

scala> class MyClass { val a:Int = 3; 
var c:Int = _; 
c = a + a ;  // Correct
}
defined class MyClass

答案 4 :(得分:0)

您可能正在将静态与实例变量混合使用。这就是我写这篇文章的方式,不要混淆自己:

public class AddInsideClassVar{
    int a;
    int c;

    public void doStuff() {
        a = 3;              
        c = a + a;
    }

    public static void main(String args[]){
        AddInsideClassVar instance = new AddInsideClassVar();
        instance.doStuff(); 
        System.out.println(c);
    }
}

a和c是实例变量。它们由非静态方法操纵,该方法需要操作类的实例。因此,我在main()中创建实例,然后调用该函数来操作实例变量。