编译器显示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

从代码似乎正在尝试做的事情来看,您可能希望iStudent5的静态成员,而不是构造函数中的局部变量:

class Student5{
    private static int i = 0;

    Student5(){
        System.out.println(i++);
    }

. . .
}

07-26 03:51