编译器说“参数 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++);
}
. . .
}
关于java - 为什么我不能在 Java 构造函数中声明静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31504094/