我可以在初始化后初始化静态变量吗?

时间:2017-02-09 09:53:41

标签: java static

以下代码有什么问题?

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

如果我这样写(如上所述),我会收到编译错误。

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

对于第二个,我没有收到任何错误。

7 个答案:

答案 0 :(得分:7)

你的两个例子都不应该编译。

div

是一个语句,它在class declaration内无效。您只能将以下内容直接放在类中:

  • 成员声明(成员/静态变量声明(如a=10; ),方法,嵌套类和接口);
  • 静态和实例初始化程序;
  • 构造

您需要在块中放置一个语句,例如静态初始化程序:

static int a;

相当于:

static int a;

static {
  a = 10;
}

答案 1 :(得分:3)

您需要使用静态语句块在另一行(方法外)进行分配

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

答案 2 :(得分:1)

a = 4; 必须在有效范围内完成

方法或构造函数......

此行有效

static int a=10;

因为java允许你在一个语句中声明和初始化!

答案 3 :(得分:0)

如果要在将其定义为null int之后初始化a,则只能在函数中执行此操作,因为它是静态的。

答案 4 :(得分:0)

必须在静态块或init块或构造函数中初始化

  您只能在函数或块内声明后初始化您的成员变量,因为它是静态的,您应该使用静态块

答案 5 :(得分:0)

您目前正在做的是在类减法中声明一个变量,该变量无效。看看这个,你的例子都不应该给你带来任何好结果。

在类声明中,您可以初始化变量:

static int a;

然后,如果您想使用它,您必须首先创建一个方法(如果您不知道这一点,我强烈建议您观看一些youtube教程或阅读有关此主题的书籍):

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

在类声明中,您可以:声明方法,初始化器和构造函数。 (你可以做多一点,但是在潜入太深之前我会看看这些点。)

此外,您似乎不知道静态变量或静态方法的作用,我认为以下帖子可以帮助您:

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

What are static method and variables?

我希望我能帮助学习Java并获得乐趣

答案 6 :(得分:0)

因为在类加载时分配了静态内存 所以我们需要这样做 class test {static int a = 10; public static void main(String args []){a = 12 output(test.a(or)a);}}