【问题标题】:Why can we not initialize instance variable in two steps like [duplicate]为什么我们不能像[重复]这样分两步初始化实例变量
【发布时间】:2016-03-23 11:15:10
【问题描述】:
class A {
    int n;
    n=1;
}

错误:标识符应指向 n=1;

为什么会出现这个错误?

【问题讨论】:

  • n=1; 只能出现在方法/构造函数/初始化块中。
  • 我不确定你是否知道你在问.... Eran 是对的!

标签: java variables initialization instance


【解决方案1】:

将代码替换为 int n = 1;

而且这个问题似乎与Java instance variable declare and Initialize in two statements 重复。

我没有足够的权限,有权限的人,请标记为“重复”。

【讨论】:

    【解决方案2】:

    其他答案中已经指出的解决方案是: 将int n =1; 写成单行。

    但是如果你想了解这个错误的原因,那就是你不能在类体内有语句。正如@Eran 指出的那样,语句只能在方法/构造函数/初始化块内。

    当你这样做时 int n = 1; 在单行中,它是一个特殊的语句/表达式,称为definition。所以它被允许作为一个特殊情况。

    在此处阅读有关语句和表达式的更多信息:JAVA statements and expressions

    【讨论】:

      【解决方案3】:

      但是,这是可能的:

      public class A{
          int n;
          {
             n = 1;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2015-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多