黑马程序员技术交流社区

标题: 成员变量的初始化和代码块哪个先执行? [打印本页]

作者: guohuaxin    时间: 2015-7-31 23:05
标题: 成员变量的初始化和代码块哪个先执行?

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,怎么解释呢?是是先是先初始化,还是先执行代码块啊?
       


作者: rxtm    时间: 2015-7-31 23:07
他俩是一样的
作者: guohuaxin    时间: 2015-8-1 00:14
rxtm 发表于 2015-7-31 23:07
他俩是一样的

不一样的,我运行过
作者: hellojavacode    时间: 2015-8-1 00:29
你这个代码有错误吧,成员变量不是静态的,你不创建Demo对象的话,是怎么把a输出的?
作者: rxtm    时间: 2015-8-1 11:48
guohuaxin 发表于 2015-8-1 00:14
不一样的,我运行过

我是说加不加括号都一样,不是说结果一样
作者: myself123    时间: 2015-8-1 13:13
是从上往下执行的把
作者: 嘉嘉    时间: 2015-8-1 13:35
成员变量是随着类的加载而执行,构造代码块给对象进行初始化,成员变量先执行




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