不初始化实例变量会节省内存吗?
例如,比较以下两个类:
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 (默认值)没有区别,因为无论如何它都会被初始化,所以我认为不会有任何内存使用差异。
但通常为了更好地理解(无需记住所有代码阅读器的默认值),显式初始化它们似乎很好。