当前位置: 首页 > 面试题库 >

未初始化的原始实例变量是否使用内存?

许招
2023-03-14
问题内容

在Java中,声明类级别的实例变量而不初始化它会消耗内存吗?
例如:int i;如果不使用初始化内存,是否使用任何内存i = 5;

细节:

我有一个巨大的超类,许多不同的子类(不足以拥有自己的超类)扩展了。某些子类不会使用超类声明的每个原语。我可以简单地将这些原语保留为未初始化状态,而仅在必要的子类中对其进行初始化以节省内存吗?


问题答案:

类中定义的所有成员都具有默认值,即使您没有显式初始化它们也是如此,因此它们确实会使用内存。

例如,每个int默认情况下都将初始化为0,并且将占用4字节。

对于班级成员:

int i;

是相同的 :

int i = 0;

这就是JLS关于实例变量的说法:

如果类T的字段a是实例变量,则将创建一个新的实例变量a,并将其初始化为 默认值
(第4.12.5节),作为类T的每个新创建对象或包含以下内容的任何类的一部分T的子类(第8.1.4节)。当完成对对象变量的任何必要的确定(第12.6节)之后,如果不再引用该实例变量作为字段的对象,则该实例变量实际上不再存在。



 类似资料:
  • 本文向大家介绍tensorflow 初始化未初始化的变量实例,包括了tensorflow 初始化未初始化的变量实例的使用技巧和注意事项,需要的朋友参考一下 今日在Stack Overflow上看到一个问如何只初始化未初始化的变量,有人提供了一个函数,特地粘贴过来共大家品鉴: 通过tf.global_variables()返回一个全局变量的列表global_vars, 然后以python列表解析式的

  • 我在这里看到过类似的问题,如果这看起来像是重复的,我很抱歉,但是类似问题的答案对我没有帮助。所以我有一个方法,它是类的一部分。这里是: 错误表明变量min可能尚未初始化。我不明白这怎么可能是真的。我觉得变量不可能不在for循环之外初始化。请帮忙。谢谢

  • 我想了解各种情况下类实例的初始化 在JLS-7第12.5节中,没有提到如何以及何时初始化最终实例变量?如果实例变量被声明为final,是否有人能给我一点参考来理解其行为? 给出的输出如下 在哪里作为 是否将输出作为

  • 问题内容: 来自Sun文档 通常,您需要将代码放在构造函数中以初始化实例变量。 使用构造函数初始化实例变量有两种选择:初始化块和final方法。 我能理解初始化块的用法。谁能解释一下实例初始化方法的最终方法吗?非最终公开赛员可以完成这项工作。为什么不只是使用它们呢? 问题答案: 您链接到的同一Sun教程中已经描述了该优点: 最终方法不能在子类中覆盖。 有关接口和继承的课程将对此进行讨论。 非最终方

  • 问题内容: 这是一些示例代码, 输出:d.value()返回0 //我希望10是因为lookup()被覆盖,但不是0!有人可以澄清吗? 的实例变量的初始化在执行其查找方法时尚未发生。如何确保在调用其方法时初始化的实例变量? 问题答案: 首先,由于缺乏方法,该代码无法编译。 无论如何,我相信您的问题是,由于构造函数是分层运行的,您的期望是无效的。 超类的构造函数始终在子类的构造函数之前运行,这包括子