【问题标题】:does static variable initialized in default constructor?在默认构造函数中初始化静态变量吗?
【发布时间】:2017-07-13 10:54:52
【问题描述】:
class Temp{
       final static int x;
     public static void main(String[] args){
    }
}

编译错误:变量 x 未在默认构造函数中初始化

为什么它说没有在默认构造函数中初始化,因为变量是静态的? 这里默认构造函数的作用是什么?

【问题讨论】:

  • 那是因为变量是final,需要在声明的时候初始化。
  • 或在静态初始化块中

标签: java static final


【解决方案1】:

你是对的,那个错误信息不是很有帮助。必须在声明点或通过静态块初始化static final 变量(通常将static 放在final 之前):

final static int x = 0;
//or
final static int y;
static {
  y = 0;
}

我不能说任何相关的错误报告,所以如果你愿意,你可以提交一份。

【讨论】:

  • Thanx...我也尝试了最终的非静态变量...它给出了同样的错误。在最终非静态的情况下......错误是可以接受的
【解决方案2】:

它不仅是静态的......它是最终的静态 :) 静态最终成员应内联或在静态块中初始化。

【讨论】:

  • Thanx... 但我的问题是这里默认构造函数的作用是什么
  • @RahulGupta 绝对不是 any 构造函数的角色,默认或其他,初始化static 字段,并且在那一点上,该消息具有误导性。
  • @KevinAndersonthanx
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-03
  • 2015-07-03
  • 1970-01-01
相关资源
最近更新 更多