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

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

4

9 回答 9

16

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

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/

于 2013-07-04T12:43:40.530 回答
3

statics 在函数范围内在 Java 中是不允许的。

于 2013-07-04T12:44:24.243 回答
3

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

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

于 2015-01-11T13:01:35.943 回答
1

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

而且我在那里没有看到declaring 它们的任何用途static

在静态字段上关注JL

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

于 2013-07-04T12:44:58.830 回答
1

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

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

于 2013-07-04T12:45:20.547 回答
0

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

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

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

于 2013-07-04T12:43:48.977 回答
0

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

于 2013-07-04T12:46:20.680 回答
0

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

static int first=0;
static int second=1;
static int sum;
private static int Fibonoci(int n) {
    if(n>0)
于 2013-07-04T12:46:35.783 回答
0

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

于 2013-07-04T12:49:12.457 回答