2 qq 37078792 qq_37078792 于 2017.01.08 17:21 提问

【java】声明变量赋值为null和不赋值有没有区别

比如下面这段代码:
public class A {
A a;
}

public class A {
A a = null;
}
这两种写法有没有区别

4个回答

u010528826
u010528826   2017.01.08 17:58

成员变量的话要看有没有用final修饰。

如果没有被final成员变量不需要显式的赋值,因为它会有一个初始化的过程,初始化会赋为默认值。
就像你上面代码中的那样,并没有什么区别。

如果被final修饰,(即常量)则必须声明时就进行赋值,否则编译报错。因为常量是不能被修改的,所以这一点应该很好理解。

如果是局部变量则必须显式的赋值,否则编译报错,因为它没有初始化的过程。
这里是必须显式的赋值,不是声明时就进行赋值,注意和常量的区别。

u010528826
u010528826 回复??333: 要是能帮到你,麻烦采纳一下。谢谢
11 个月之前 回复
qq_37078792
qq_37078792 明白了,谢谢
11 个月之前 回复
liu270335264
liu270335264 不错,不错!有final与无final,成员变量与局部变量!
11 个月之前 回复
baidu_36779925
baidu_36779925   2017.01.08 17:33

在全局变量没啥区别,局部变量有问题。

Ro_bot
Ro_bot   2017.01.08 18:08

你应该去了解下 java 的类初始化过程。
初始化过程中,JVM 会默认将成员变量赋值,
引用类型为 null
即 a 赋值为 null

u012976158
u012976158   2017.01.09 10:57

如果是定义引用数据类型的变量 , 那么会自动初始化为null

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!