成员变量可以不用初始化,其具有默认值;但是局部变量一定需要初始化或者赋值后才能使用,否则编译报错。
public class Demo { int m; public static void main(String[] args) { Demo demo = new Demo(); System.out.println(demo.m); //输出0 }}public class Demo { public static void main(String[] args) { int m; System.out.println(m); //报未初始化错误 }}
- 首先 Java 语言就是这么规定的。
- 然后为什么 Java 语言要这么规定呢?有什么内部机理吗?
for (int i = 0; i < 10; i++) { int n; if (i % 2 == 0) { n = 10; } else { n = 20; }}像是这个n,我们完全不用JVM帮我们初始化,如果每次循环他都帮我们初始化一次,那么是没有必要的。综上所述,对于局部变量,可能不帮我们初始化是一个不错的选择。(而且JVM实现起来也更容易!!!)
转自知乎: