Can i declare a static variable inside static member function in Java?

23,581

Solution 1

You can not declare varibale as static inside a method.
Inside method all variables are local variables that has no existance outside this method thats why they cann't be static.

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

You are trying to write code for fibonacci series and for that you don't need static variables for that just here is some links who describes the sol for that

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/

Solution 2

statics at function scope are disallowed in Java.

Solution 3

The Root cause: Static Variables are allocated memory at class loading time because they are part of the class and not its object.

Now, if static variable is inside a method, then that variable comes under the method's scope and JVM will be unable to allocate memory to it.

Solution 4

Local variables cannot be declared static. In other words Static doesn't apply to local variables.

And I didn't see any use of declaring them static there.

Follow JLs on static fields

A static field, sometimes called a class variable, is incarnated when the class is initialized (§12.4).

Solution 5

You can't declare a static variable inside a method, static means that it's a variable/method of a class, it belongs to the whole class but not to one of its certain objects. This means that static keyword can be used only in a 'class scope' i.e. it doesn't have any sense inside methods.

I don't know what you are trying to achieve, but if you really want these variables to be static then you can declare them as static fields in your class.

Share:
23,581

Related videos on Youtube

Raghu
Author by

Raghu

Updated on July 09, 2022

Comments

  • Raghu
    Raghu almost 2 years
    private static int Fibonoci(int n) {
    static int first=0;
    static int second=1;
    static int sum;
    if(n>0)
    

    i am getting a error "Illegal Modifier" and if i remove static keyword there is no error and i need those variables to be static

    • Pshemo
      Pshemo almost 11 years
      I need those variables to be static then declare them as static fields in your class.
  • vikingsteve
    vikingsteve almost 11 years
    only class variables (fields) and methods can be static.
  • SasQ
    SasQ about 8 years
    But that's exactly what static local variables are used for in languages like C or C++: to use the static memory instead of the stack, but limit their scope to the inside of a function. Static variable in the class scope is a different thing, because it is visible to all other methods.