初始化实例变量是否会保存任何内存?
例如,比较以下两个类:
public class Class1 {
private String s;
// getter/setter for s
}
public class Class2 {
private String s = "";
// getter/setter for s
}
假设其他地方已经有""
字符串常量,new Class1()
消耗的内存少于new Class2()
吗?
答案 0 :(得分:2)
不,默认情况下,未初始化的变量设置为null。基元类型的一些其他默认初始化规则是:
boolean
- 始终设置为false。int
,float
和double
- 设置为零。答案 1 :(得分:1)
可能取决于JVM实现。两者之间的主要区别在于生成的代码。 Class2
会明确将s
的值设置为所有情况。而Class1
可能永远不会将s
设置为导致意外行为的特定内容。
答案 2 :(得分:0)
如果你将它初始化为null(默认值)没有区别,因为它无论如何都会被初始化,所以我不认为会有任何内存使用差异。
但通常为了更好地理解(不需要记住所有代码阅读器的默认值),明确初始化它们似乎很好。