这个问题在这里已经有了答案:
Why are local variables not initialized in Java?
(17 个回答)
7年前关闭。
我是java初学者,想弄清楚关于变量初始化的想法。这是代码 -
public class NumberSequence {
private static int n;
public static void main(String[] args) {
print(myTest());
print(myTest());
}
private static int myTest() {
n++;
return n * n;
}
}
连续两次调用 myTest() 方法,输出为 1 和 4。所以我知道 n 的默认值为 0。所以对于 myTest() 的第一次调用,n 将增加一个结果 1,然后将执行乘行,即
1 * 1
这是1
.下一次调用 myTest(),n 初始为 1,然后递增到 2,然后是乘法,即
2 * 2
这是4
现在我正在尝试这样做——
public class NumberSequence {
public static void main(String[] args) {
int m;
m++;
int n = m * m;
print("n = " + n);
}
}
在这里,它给出了编译器错误,即 m 未初始化,这是显而易见的。所以我的问题是——在我创建 myTest() 方法的第一个选项的情况下,编译器为什么不会提示。那里我没有初始化
n
的值.编译器是否正在执行初始化?我想得到这个澄清。
最佳答案
所有类或实例 字段 初始化为 0, 0.0, null
等默认情况下。
全部 局部变量 默认情况下根本不初始化。
public class NumberSequence {
// Static field is initailized to 0 by default
private static int n;
public static void main(String[] args) {
// Quite OK: n being a static field is initialized to zero
n = n * n;
// local variable, aren't initialized
// (so it contains trash)
int m;
// Attempt to use trash value (since m hasn't been initialized so far)
// results in compiler warning/error
int n = m * m;
关于java - java中的变量初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22326110/