使用和不使用初始化的内存使用情况为null

时间:2012-12-27 01:01:18

标签: java memory initialization

初始化实例变量是否会保存任何内存?

例如,比较以下两个类:

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

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

假设其他地方已经有""字符串常量,new Class1()消耗的内存少于new Class2()吗?

3 个答案:

答案 0 :(得分:2)

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

  • boolean - 始终设置为false。
  • intfloatdouble - 设置为零。

答案 1 :(得分:1)

可能取决于JVM实现。两者之间的主要区别在于生成的代码。 Class2会明确将s的值设置为所有情况。而Class1可能永远不会将s设置为导致意外行为的特定内容。

答案 2 :(得分:0)

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

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