我可以在Java中的静态成员函数中声明一个静态变量吗?

问题描述 投票:7回答:9
private static int Fibonoci(int n) {
static int first=0;
static int second=1;
static int sum;
if(n>0)

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

java function static local-variables
9个回答
12
投票

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

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
投票

Java中不允许使用函数范围的statics。


1
投票

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

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


1
投票

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

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

关注JLs on static fields

初始化类时,静态字段(有时称为类变量)会显示(第12.4节)。


1
投票

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

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


0
投票

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


0
投票

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

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

0
投票

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


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.