1

不初始化实例变量会节省内存吗?

例如,比较以下两个类:

public class Class1 {
    private String s;
    // getter/setter for s
}

public class Class2 {
    private String s = "";
    // getter/setter for s
}

假设""其他地方已经有一个字符串常量,new Class1()消耗的内存是否比new Class2()?

4

3 回答 3

2

不,默认情况下,未初始化的变量设置为 null。原始类型的其他一些默认初始化规则是:

  • boolean- 始终设置为 false。
  • int,floatdouble - 设置为零。
于 2012-12-27T01:23:39.410 回答
1

可能取决于 JVM 实现。两者的主要区别在于生成的代码。Class2在所有情况下都将明确设置s某物的值。而Class1可能从未设置s为导致意外行为的特定内容。

于 2012-12-27T01:02:45.050 回答
0

如果将其初始化为 null (默认值)没有区别,因为无论如何它都会被初始化,所以我认为不会有任何内存使用差异。

但通常为了更好地理解(无需记住所有代码阅读器的默认值),显式初始化它们似乎很好。

于 2012-12-27T04:03:57.083 回答