初始化后可以初始化静态变量吗?
下面的代码有什么问题?初始化后可以初始化静态变量吗?
class test {
static int a;
a=10;
}
如果我像这样写(如上),我得到一个编译时错误。
class test {
static int a=10;
a=4;
}
对于第二个,我没有得到任何错误。
你的两个例子都不应该编译。
a=10;
是一个声明,它不是直接在class declaration内有效。只能把直接类内部以下:
- 成员声明(构件/静态变量声明(如
static int a;
),方法,嵌套类和接口); - 静态和实例初始值设定项;
- 构造函数。
你需要把一个语句块中,例如静态初始化:
static int a;
static {
a = 10;
}
这相当于:
static int a = 10;
您需要使用声明的静态块在另一条线上进行分配(方法外)
class test {
static int a;
static { a=10; }
}
a = 4;必须在有效的范围
任何方法或构造函数来完成...
这条线是有效的,而不是
static int a=10;
因为Java允许youto声明,并在一个语句中初始化!
如果要在将其定义为空整型之后初始化a,则只能在函数中执行该操作,因为它是静态的。
'int'不能为空。如果您未分配它,它的值将为零。你不需要在一个函数中完成它,你也可以在初始化块中完成它。 –
要添加到Andy的注释中,事实上Java中没有任何基本类型都是可以为空的,它们将使用默认值进行初始化。 – px06
必须在静态块或init块或构造函数中初始化。
你只能初始化函数或块内声明后,您的成员变量,因为它是静态的,你应该使用静态块
什么目前你正在做的是在声明一个类decleration,这是无效的变量。看看这个例子都不会给你任何好的结果。
类声明中,你可以不过初始化变量:如果你想用它来工作
static int a;
然后,你必须首先创建一个方法(如果你没有意识到这一点,我会强烈建议观看一些YouTube的教程或阅读关于这个主题的书):
public void foo(int a){
a = 6; //Here you can play with your variables and change them
}
在类declararions您可以:声明方法,初始化和建设者。 (你可以做更多的事情,但是在潜入太深之前我会看看这些点)。
而且似乎你不知道什么是静态变量或静态方法呢,我认为下面的帖子会帮你:
difference between 'static int' and 'int' in java
What are static method and variables?
我希望我可以帮助和玩乐学习Java
用于在类加载时声明的静态变量内存,通过class.static变量或静态变量来调用我们调用的变量。对于创建的@ object创建的实例变量内存,这意味着在创建对象时,我们通过声明的变量进行调用。 – Attri
因为在分类加载时分配静态内存 所以我们需要这样做 class test {static int a = 10; public static void main(String args []){a = 12 output(test.a(or)a);}}
您不能在变量的声明中包含单独变量的变量,超出任何方法或块。 – SomeJavaGuy
你的两个例子都不能编译 – Idos
“对于第二个,我没有收到任何错误。”你应该得到一个错误。 –