java基础(1)
2015-11-23 16:35
357 查看
class test { static { a=3; //System.out.println(a); } static int a = 1; String b = "ff"; public static void main (String[] args) throws java.lang.Exception { System.out.println("hi"); new test(); } }
这样的代码有没语法错误呢? 实际上是没有的。可能有人认为是不行的,变量定义在代码块赋值后面,先赋值了。既然这样是对的,那么看下面这段代码对不对呢。
class test { static { a=3; System.out.println(a); } static int a = 1; String b = "ff"; public static void main (String[] args) throws java.lang.Exception { System.out.println("hi"); new test(); } }
在静态代码块中有一条输出语句,应该有挺多人看了上面的例子以为这段代码的语法是正确的吧。其实System.out.println(a);这段代码是有错误的。
a=3;是赋值
System.out.println(a);是调用 两个是不一样概念的。
为什么错呢?这个是编译期异常。遵循一个先定义后使用的原则。不过能赋值这里就不太能够理解了。难道是先加载类的结构信息,构造函数,方法,属性等。即使变量定义在最后一行,还是可以在第一行进行赋值。
相关文章推荐
- cxf spring
- 3、Java流程控制与函数
- SSH——Spring控制反转
- 简单总结Java的反射机制的运用
- 用Eclipse 开发Dynamic Web Project应用程序
- struts的excute方法
- 3.Java Script 类型
- java.lang.NoSuchMethodError: org.json.JSONArray.remove
- Java集合---HashMap源码剖析
- JAVA中的Calendar
- eclipse打开工作空间后闪退,没有显示加载进度条
- 从头开始学JAVA
- 回溯法(1)
- java 实现 自动发邮件功能
- Java Calendar 类的时间操作
- java 读写文件
- java中session问题总结!
- java 解决世界最难数独
- eclipse 的jar 文件和src 同一目录问题解决
- gradle 上传repo with sources & javadoc