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