比如下面这段代码:
public class A {
A a;
}
和
public class A {
A a = null;
}
这两种写法有没有区别
成员变量的话要看有没有用final修饰。
如果没有被final成员变量不需要显式的赋值,因为它会有一个初始化的过程,初始化会赋为默认值。
就像你上面代码中的那样,并没有什么区别。
如果被final修饰,(即常量)则必须声明时就进行赋值,否则编译报错。因为常量是不能被修改的,所以这一点应该很好理解。
如果是局部变量则必须显式的赋值,否则编译报错,因为它没有初始化的过程。
这里是必须显式的赋值,不是声明时就进行赋值,注意和常量的区别。
在全局变量没啥区别,局部变量有问题。
你应该去了解下 java 的类初始化过程。
初始化过程中,JVM 会默认将成员变量赋值,
引用类型为 null
即 a 赋值为 null
如果是定义引用数据类型的变量 , 那么会自动初始化为null