黑马程序员技术交流社区

标题: 概念解析 [打印本页]

作者: 毛标    时间: 2012-9-27 17:30
标题: 概念解析
本帖最后由 毛标 于 2012-9-27 21:40 编辑

        static {
                System.out.println(demo);//这里换成b.demo我知道可以输出,就demo为什么不行
        }
        static int demo=1;
为什么会报错,
           static int demo=1;
        static {
                System.out.println(demo);
        }这样就可以输出
        思维有些混乱,,谁能给解释下
作者: 刘进朝    时间: 2012-9-27 17:57
写两次做什么?
作者: 陈琦    时间: 2012-9-27 18:01
static 修饰的静态代码块在类加载的时候就进行初始化,因为你写的是方法所以类加载的时候就运行,而它并不知道有demo这个变量,应该算向前引用的问题。
作者: 王贵朝    时间: 2012-9-27 18:04
static {
                System.out.println(demo);//这里换成b.demo我知道可以输出,就demo为什么不行
        }
        static int demo=1;//在static中的输出语句会出现非法向前引用,可以证明静态代码块在类一加载时就会运行




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2