【问题标题】:Can i declare a static variable inside static member function in Java?我可以在 Java 的静态成员函数中声明一个静态变量吗?
【发布时间】:2013-07-02 11:28:34
【问题描述】:
private static int Fibonoci(int n) {
static int first=0;
static int second=1;
static int sum;
if(n>0)

我收到一个错误“非法修饰符”,如果我删除静态关键字没有错误,我需要这些变量是静态的

【问题讨论】:

  • 将它们包装在一个类中。
  • I need those variables to be static 然后将它们声明为类中的静态字段。
  • 为什么需要它们是静态的?
  • 我在我的 ans 中分享了一些链接,转到 fabonacci 系列的那些链接,在你真正需要它们之前不要使用静态变量。

标签: java function static local-variables


【解决方案1】:

根本原因:静态变量在类加载时分配内存,因为它们是类的一部分,而不是它的对象。

现在,如果静态变量在方法内,那么该变量就在方法的范围内,JVM 将无法为其分配内存。

【讨论】:

  • 但这正是静态局部变量在 C 或 C++ 等语言中的用途:使用静态内存而不是堆栈,但将它们的范围限制在函数内部。类范围内的静态变量是另一回事,因为它对所有其他方法都是可见的。
【解决方案2】:

您不能在方法内将变量声明为静态。
在方法内部,所有变量都是局部变量,在此方法之外不存在,这就是为什么它们不能是静态的。

static int first=0;
static int second=1;
static int sum;
private static int Fibonoci(int n) {
   //do somthing
}

您正在尝试为斐波那契数列编写代码,为此您不需要静态变量,这里有一些描述 sol 的链接

http://crunchify.com/write-java-program-to-print-fibonacci-series-upto-n-number/

http://electrofriends.com/source-codes/software-programs/java/basic-programs/java-program-find-fibonacci-series-number/

【讨论】:

  • 只有类变量(字段)和方法可以是静态的。
【解决方案3】:

Local variables 不能声明为静态的。换句话说,Static 不适用于local variables。

我没有看到 declaring 他们 static 有任何使用。

关注JLs on static fields

静态字段,有时称为类变量,在类初始化时体现(第 12.4 节)。

【讨论】:

    【解决方案4】:

    这个变量称为局部变量,它们在方法范围或构造函数内部,它们不能是实例或类变量。

    private static int COUNT;// Class Variable
    private static int Fibonoci(int n) {
     int a =3 ; // local variable
    }
    

    我需要这些变量是静态的,好吧,你为什么需要这个?因为静态变量用于特殊目的,但是,您可以像我在上面的代码中那样创建静态字段。

    【讨论】:

      【解决方案5】:

      您不能在方法中将变量声明为静态。换句话说,我们可以说, 局部变量不能声明为静态的。

      【讨论】:

        【解决方案6】:

        需要在函数外声明静态变量:

        static int first=0;
        static int second=1;
        static int sum;
        private static int Fibonoci(int n) {
            if(n>0)
        

        【讨论】:

          【解决方案7】:

          您必须将静态变量定义为类中的成员。在方法中定义的变量是局部变量,它们的生命周期在方法结束时结束。局部变量是调用特定的,成员变量是对象特定的,静态变量是类特定的变量。

          【讨论】:

            【解决方案8】:

            您不能在方法中声明静态变量,static 表示它是一个类的变量/方法,它属于整个类,但不属于其某些对象之一。 这意味着 static 关键字只能在“类范围”中使用,即它在方法内部没有任何意义。

            我不知道你想要实现什么,但如果你真的希望这些变量是静态的,那么你可以在你的类中将它们声明为静态字段。

            【讨论】:

              【解决方案9】:

              statics 在 Java 中是不允许的。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-05-03
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多