编译器显示illegal modifier for parameter i
。
请告诉我我在做什么错。为什么我不能在Java构造函数中使用静态变量?
class Student5{
Student5() {
static int i = 0;
System.out.println(i++);
}
public static void main(String args[]){
Student5 c1 = new Student5();
Student5 c2 = new Student5();
Student5 c3 = new Student5();
}
}
最佳答案
由于要声明i
的位置:
Student5(){
static int i=0;
System.out.println(i++);
}
编译器将其视为构造函数中的局部变量:
局部变量不能声明为
static
。有关局部变量允许使用哪些修饰符的详细信息,请参见Section 14.4 of the Java Language Specification。从代码似乎正在尝试做的事情来看,您可能希望
i
是Student5
的静态成员,而不是构造函数中的局部变量:class Student5{
private static int i = 0;
Student5(){
System.out.println(i++);
}
. . .
}