static与final变量
一、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块。
最热门文章推荐:
>· oracle top
>· oracle公司
>· oracle instr
>· oracle 日期
>· oracle 8i
>· oracle sql语句
>· win pe
>· sky pe
- · J2se5.0 generis新特性
- · 优化apache/tomcat配置
- · Catalina-tomcat中处理异常的一个BUG?
- · 有关FileUpload组件的使用和调试的经验
- · 使用jsp完成文件可定制上载
- · 可以使用多个jsp定制标签在JSP中达到接近servelt的处理效果
- · Eclipse快速上手Hibernate--4. 继承映射(2)
- · 从报表的绘制方式来谈谈:SQL报表,Cell报表和中国式报表.
- · 关于如何使用struts标签输出值为map的list
- · 谈谈偶的通用数据库查询器开发心得
- · (albertyi原创)Eclipse 安装,调试快速入门
- · HibernateInit
- · HibernateInit
- · Taglib原理和实现
- · 解决tomca/JVMt的Memory run out异常中止
- · 如何迅速成为Java高手[Tomjava原创]
- · MIDP2.0下处理Alpha通道产生半透明效果
- · Java使用Oracle遇到的最大游标超出问题及其解决方法
- · Jboss EJB3.0 security
- · What is hibernate?
- · Resin2.1.12的数据库连接池配置
- · Eclipse快速上手Hibernate--4. 继承映射(3)
- · 在Java中检索Google的搜索结果
- · Eclipse3.0+Tomcat5.0+Lomboz的配置
- · java资料站点(添加几个中文的)
- · J2ME中需要的Java基础知识
- · java 文件操作大全
- · java 文件操作大全
- · 首款JAVA即时通讯软件,中国人要做垮平台的MSN
- · JSP用中收集数据:javascript 实现输入多行动态输入
- · 运行resin时的JMX MalformedObjectNameException问题
- · 我的第一款J2ME游戏:美女五子棋
- · StringHelper
- · 深入了解JVM-----Inside JVM读书笔记
- · JAVA小画板(应用程序)
- · Tomcat配置心得及相关资料
- · Resin2.1.12的数据库连接池配置
- · JAVA代码编写的30条建议
- · 55种网页常用小技巧(javascript)
- · Eclipse快速上手Hibernate--5. 组件映射
- · java访问com组件_jacob使用指南
- · Java中static、this、super、final用法
- · 给jikes指定encoding属性的编译过程
- · 新手请教jsp连接数据库的问题
- · ICE 2.0学习笔记1(HelloWorld)
- · ICE 2.0学习笔记1(HelloWorld)
- · ICE 2.0学习笔记1(HelloWorld)
- · ICE 2.0学习笔记1(HelloWorld)
- · ICE 2.0学习笔记1(HelloWorld)
- · hibernate 三种查询方式
- · appfuse配置说明错误
- · IReport与JasperReport开发详解一
- · Ajax: 一种建立Web应用的新途径
- · 使用validwhen设计复杂的Struts表单验证
- · Jboss Ejb MDB
- · java通过JDBC访问Oracle的2个异常
- · 生成一个java编制的可执行文件
- · J2SE 5.0专题 之 语言特性
- · 基于JAVAMAIL包的邮件发送程序----kangkang
- · Jboss Ejb3.0 Interceptor
- · 学习J2SE过程中的30个基本概念
- · Java String 的 equals() 方法可能的优化
- · 一个生成唯一序号的服务,虽然技术不先进,但是很好用
- · 处理系统中的各类附件,上传下载
- · Hibernate配置文件在单元测试中的应用
- · 我的J2ME编程联系(1)——List
- · 我的J2ME编程联系(2)——DateField
- · 我的J2ME编程联系(2)——DateField
- · Effective Java -->(一)创建和销毁对象
- · Spring下业务层的UnitTest--4.15更新
- · jsp连接mysql 并正常显示中文
- · 分页显示问题的解决方法(jsp,sqlserver,mysql,oracle)
- · 使用DateFormat类输出各种格式的时间(上)
- · 列出当前系统的硬盘盘符
- · 关于JSP数据库连接的问题?
- · Eclipse学习4-在Eclipse中使用JUnit进行单元测试(上)
- · Tomcat 5.5.7配置一个APP问题
- · 集成 Struts、Tiles 和 JavaServer Faces
- · Eclipse学习4-在Eclipse中使用JUnit进行单元测试(下)
- · 求出e=1+1/1!+1/2!+1/3!+……+1/n!+……的近似值的java applet程序

