【问题标题】:Why does a variable not need a type inside a static block [duplicate]为什么变量在静态块中不需要类型[重复]
【发布时间】:2013-08-05 03:42:30
【问题描述】:

这样的编程,

static {
  a = 6;
}

为什么元素“a”不需要类型

【问题讨论】:

  • 'a' 确实需要一个类型。 a 的类型必须在静态块之上声明,否则编译失败。
  • 这本身不会编译。
  • This 是我找到的关于这个主题的最佳参考。

标签: java


【解决方案1】:

这不是一个变量的声明,这是一个变量的赋值。 'a' 的类型在其他地方定义。所以,这段代码本身不会编译,你需要一个变量声明,比如:

class X {
     private static int a;

     static {
         a = 6;
     }
}

作为对下面评论的回答,这是初始化序列:

  1. 执行静态语句/静态块。
  2. 为实例变量分配默认值
  3. 如果为实例变量分配了编译时间常数,则初始化实例变量。否则,将与第 5 项一起完成(实例变量实例初始化器将按照定义的顺序从上到下一起完成)。
  4. 构造函数运行
  5. 实例初始化块在对 super 的所有调用都已完成但在构造函数的其余部分执行之前运行。
  6. 构造函数的其余部分被执行。

【讨论】:

【解决方案2】:

Java 中的每个变量都需要一个类型。

【讨论】:

    【解决方案3】:

    我想你在某个地方初始化了变量 a

     private static int a;
    static {
      a = 6;
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-01
      • 2014-10-28
      • 2020-10-22
      • 2015-02-14
      相关资源
      最近更新 更多