A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 毛标 中级黑马   /  2012-9-27 17:30  /  1223 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 毛标 于 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);
        }这样就可以输出
        思维有些混乱,,谁能给解释下

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
写两次做什么?
回复 使用道具 举报
static 修饰的静态代码块在类加载的时候就进行初始化,因为你写的是方法所以类加载的时候就运行,而它并不知道有demo这个变量,应该算向前引用的问题。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
static {
                System.out.println(demo);//这里换成b.demo我知道可以输出,就demo为什么不行
        }
        static int demo=1;//在static中的输出语句会出现非法向前引用,可以证明静态代码块在类一加载时就会运行

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马