首页 > 学院 > 开发设计 > 正文

java基础(1)

2019-11-14 15:01:29
字体:
来源:转载
供稿:网友
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);是调用   两个是不一样概念的。

 

为什么错呢?这个是编译期异常。遵循一个先定义后使用的原则。不过能赋值这里就不太能够理解了。难道是先加载类的结构信息,构造函数,方法,属性等。即使变量定义在最后一行,还是可以在第一行进行赋值。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表