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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© forDream 高级黑马   /  2014-1-31 10:10  /  1229 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于构造代码块  在每一个构造函数运行之前,构造代码块都对着两个对象进行统一的共性初始化

我的问题是,对象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);
        }
}

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

2 个回复

倒序浏览
构造代码块,对象一建立就运行。而且优先于构造函数。
回复 使用道具 举报
赋值顺序是这样的:
p2 = new Person("sssssss", 55);
属性的值首先会为:
name = "zhangsan";
age = 18;
接下来值会为:
name="sssssss";
age = 55;

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

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