黑马程序员技术交流社区

标题: 构造代码块的问题 [打印本页]

作者: forDream    时间: 2014-1-31 10:10
标题: 构造代码块的问题
关于构造代码块  在每一个构造函数运行之前,构造代码块都对着两个对象进行统一的共性初始化

我的问题是,对象p2被new出的时候,是先将属性赋值成构造代码块中再到构造函数赋值,还是直接构造函数赋值

class Test
{
        public static void main(String[] args)
        {
                Person p1 = new Person();//调用控参数构造函数进行初始化
                Person p2 = new Person("sssssss", 55);//调用非参数构造函数进行初始化

                /*
                两个Person对象,分别指定用不同的构造函数进行初始化。个性的初始化
                但是,在每一个构造函数运行之前,构造代码块都对着两个对象进行统一的共性初始化
                */
        }
}

class Person
{

        private String name;
        private int age;
        //构造代码块
        {
                name = "zhangsan";
                age = 18;
                System.out.println("Person code run...");
        }
        //空参数构造函数
        Person()
        {
                System.out.println("name="+name+"age="+age);
        }
        //非参数构造函数
        Person(String name, int age)
        {
                this.name = name;
                this.age = age;
                System.out.println("name="+name+"age="+age);
        }
}


作者: 透过生活    时间: 2014-1-31 10:19
构造代码块,对象一建立就运行。而且优先于构造函数。
作者: zhangchao    时间: 2014-1-31 21:26
赋值顺序是这样的:
p2 = new Person("sssssss", 55);
属性的值首先会为:
name = "zhangsan";
age = 18;
接下来值会为:
name="sssssss";
age = 55;





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