欢迎光临
我们一直在努力

static与final变量-JSP教程,Java技巧及代码

建站超值云服务器,限时71元/月

一、illegal forward refrence

前天写一个类时遇到一个很眼生的编译错误(问题简化后):

punlic final class constants{

  public static int var2 = var1 + 1;

  public static int var1 = 1;

}

编译时出错(第2行):

illegal forward refrence

仔细一想,是因为var2引用的var1在var2之后定义,看来在java中定义static变量时应遵循“声明先于使用”的原则。

二、static块

还是上一个类,var1和var2定义成final,值存在一个properties文件中,在使用前必须将值load进来:

system.getproperties().load(new fileinputstream("constants.properties"));

于是将上面的代码放在static块中:

punlic final class constants{

  static{

    system.getproperties().load(new fileinputstream("constants.properties"));

  }

  public static final int var2 = system.getproperties().getproperty("var2");

  public static final int var1 = system.getproperties().getproperty("var1");

}

但在运行时var1和var2没有被赋值,debug后发现static块根本没有执行。于是顿悟:final变量在编译时便被编译器计算、赋值,因此在运行时没有必要执行static块。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » static与final变量-JSP教程,Java技巧及代码
分享到: 更多 (0)

相关推荐

  • 暂无文章