Java变量应该在声明时初始化吗?
这是一个简单的问题,但有兴趣知道在声明中初始化Java变量是否是一个好的实践吗?我不是很始终如一;我倾向于初始化布尔值,但除此之外什么都不初始化。例如:
private Boolean test = false;
private Integer count;
我确信这是一个非常基本的问题,但我有兴趣知道原因和时间
你可以在下面搜索框中键入要查询的问题!
这是一个简单的问题,但有兴趣知道在声明中初始化Java变量是否是一个好的实践吗?我不是很始终如一;我倾向于初始化布尔值,但除此之外什么都不初始化。例如:
private Boolean test = false;
private Integer count;
我确信这是一个非常基本的问题,但我有兴趣知道原因和时间
# 1 楼答案
我说的是原语,不是,是对象。如果没有其他原因,只是为了明确说明何时需要将某些内容初始化为null。这也有助于在调试时阐明一些空值
# 2 楼答案
这甚至可能是一个基于意见的解决方案,但我通常会避免在声明时初始化它(下面有一些例外)。由于基本数据类型具有默认值,而对象具有空引用,因此也会出现初始化的情况
但是,在本例中,我已初始化:
这当然是基于观点的。我单独初始化
Array
和其他Collection
,因为有时它们会在我的服务层上引起NullPointerException
。是的,人们会建议改为修改getter。但我更喜欢只在某些情况下初始化,而不是每次# 3 楼答案
JVM将从Java Practices隐式设置以下默认值:
事实上,如果显式设置这些值,可能会导致操作执行两次。看看下面的示例类及其使用Oracle的
javac
编译的字节码:没有冗余
而且有冗余:
# 4 楼答案
意见:字段具有定义良好的默认值(null、0、false),除非需要将它们初始化为非默认值,否则不应初始化它们
然而,您的问题标题是关于变量,我的意见是,您也不应该初始化变量,除非需要。“需要”是关于变量在初始化之前是
undefined
(不是垃圾)。除非变量为definitely assigned,否则无法从变量中检索值我有时会看到以下情况:
初始值设定项是无关的、无用的和误导性的(我的真实观点使用了更有力的词语)