【问题标题】:Why local variable MUST be initialized and why instance variables MUST NOT be initialized before using?为什么必须初始化局部变量以及为什么不能在使用之前初始化实例变量?
【发布时间】:2014-04-02 12:18:34
【问题描述】:

我注意到 JAVA 允许使用未初始化的实例变量,但它阻止使用未初始化的局部变量。我想知道为什么语言会这样说

注意:这不是第一篇此类文章。我也访问过以下问题。但是找不到WHY的确切原因? 此问题可能与以下问题之一重复:

【问题讨论】:

  • 它在第一个问题的公认答案中:“对字段强制执行明确分配是不切实际的。”这就解释了为什么会有差异。不清楚您是在问为什么必须初始化局部变量,还是不必必须初始化字段。
  • 在我看来,您的问题的最佳答案将在您在问题中链接的第二个线程中找到。我看不出再次询问的意义,请尝试更仔细地阅读。编辑:也,就像 Jon Skeet 说的一样。
  • @Jon Skeet:是的,乔恩!我不清楚为什么必须初始化局部变量,为什么不能初始化实例变量!
  • @Namalak:不,我的问题是哪些你不确定。基本上现有的问题都提供了答案 - 它只会改变我会投票赞成......
  • 在这种情况下,答案在我之前评论的最后一句话。澄清一下:实例变量只需要在每个对象生命周期初始化一次,new 局部变量在 每个 调用方法/代码块时分配。

标签: java initialization


【解决方案1】:

据我所知,

  • 实例变量:类初始化时会在运行时初始化,实例变量默认为null =>实例变量会在运行时出错。
  • 局部变量:与类变量和实例变量不同,局部变量对声明的位置很挑剔:必须将声明放在实际使用该变量的第一条语句之前。 => 带有语法错误的局部变量错误。 参考:Local variable in java

【讨论】:

    【解决方案2】:

    我注意到 JAVA 允许使用未初始化的实例 变量。

    不,编译器会初始化实例变量,如果你不初始化的话。

    【讨论】:

    • 正确,但不是答案。
    猜你喜欢
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    相关资源
    最近更新 更多