java - 为什么我不能在 Java 构造函数中声明静态变量?

标签 java constructor static static-variables

编译器说“参数 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/

相关文章:

c - 为什么在所有函数(main() 除外)之前都有一个 'static' 关键字?

Java 正则表达式匹配字符前后的空格

javascript - 为什么我的构造函数没有继承 super 构造函数的方法?

Java 合并来自用户输入的两组数组 - 如何处理空值?

c++ - 如何将 int 转换为 char*?

java - 构造函数调用中的另一个方法定义?

c# - 是否固定了静态类成员?

c# - Msil 以动态类型发出静态数组

java - 我们能否以更简单的方式解决这个 socks 商人问题?

java - org.hibernate.HibernateException : No Session found