Can i initialize static variable after the initialization?

主宰稳场 提交于 2021-02-04 21:55:10

问题


What is the problem with below code?

class test {
    static int a;
    a=10;
}

If I'm writing like this (as above), I'm getting a compile time error.

class test { 
    static int a=10;
    a=4;
}

For the second one, I'm not getting any error.


回答1:


Neither of your examples should compile.

a=10;

is a statement, which is not valid directly inside a class declaration. You can only put the following directly inside a class:

  • Member declarations (member/static variable declarations (like static int a;), methods, nested classes and interfaces);
  • Static and instance initializers;
  • Constructors.

You need to put a statement inside a block, for example a static initializer:

static int a;

static {
  a = 10;
}

which is equivalent to:

static int a = 10;



回答2:


You need to use a static block of statement to do an assignment on an other line (outside a method)

class test {
    static int a;
    static { a=10; }
}



回答3:


a=4; must be done in a valid scope

either a method or a constructor...

this line is valid instead

static int a=10;

because java allows youto declare and initialize in one statement!




回答4:


If you want to initialize a after defining it as a null int, you can only do that in a function, because it is static.




回答5:


must be initialized inside static block or init block or in constructor.
you can only initialized your member variable after declaration inside a function or block because it is static you should use static block




回答6:


What you are currently doing is declaring a variable in a class decleration, which is not valid. Looking at this neither of your examples should give you any good result.

In a class declaration you can however initialize a variable:

static int a;

Then if you want to work with it you would have to create a method first (if you are not aware of this I would strongly advise to watch some youtube tutorials or read books about this topic) :

public void foo(int a){ 
a = 6; //Here you can play with your variables and change them
}

In class declararions you can: declarations methods, initializers and constructors. (there is a bit more you can do, however I would have a look at these points before diving in too deep).

Furthermore it seems that you are not aware what a static variable or a static method does, I think the following posts will help you with that:

difference between 'static int' and 'int' in java

What are static method and variables?

I hope I could help and have fun learning Java




回答7:


Because for static memory allocated at the time of class loading so we need do like this class test {static int a =10; public static void main(String args[]) { a=12 output(test.a (or) a);}}



来源:https://stackoverflow.com/questions/42133356/can-i-initialize-static-variable-after-the-initialization

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!