我是初学者,正在尝试学习java基础知识,在这个程序中,我很困惑 我们无法重新分配类实例变量的值。 这是该程序中的错误。请大家帮我解决一下。感谢
class AddInsideClassVar{
int a = 3;
int c;
c = a + a;
public static void main(String args[]){
System.out.println();
}
}
答案 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()中创建实例,然后调用该函数来操作实例变量。