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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


public class Demo
{                                                         
        //int a = 9;                //A
       
        {
                a = 6;        
        }
       
        int a = 9;          //B
       
        public static void main(String[] args)
        {
                System.out.println(new Demo().a);
               
        }
}


        情况1.  int a = 9; 如果放在A处,则输出6;
         情况2  int a = 9; 如果放在B处,则输出9;
       
        程序执行不是至上而下吗? 情况1好理解,但是情况2,怎么解释呢?是是先是先初始化,还是先执行代码块啊?
       

6 个回复

倒序浏览
他俩是一样的
回复 使用道具 举报

不一样的,我运行过
回复 使用道具 举报
你这个代码有错误吧,成员变量不是静态的,你不创建Demo对象的话,是怎么把a输出的?
回复 使用道具 举报
guohuaxin 发表于 2015-8-1 00:14
不一样的,我运行过

我是说加不加括号都一样,不是说结果一样
回复 使用道具 举报
是从上往下执行的把
回复 使用道具 举报
成员变量是随着类的加载而执行,构造代码块给对象进行初始化,成员变量先执行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马