构造代码块、构造函数、this执行顺序
一、构造函数
对象一建立就会调用与之对应的构造函数。
构造函数的作用:可以用于给对象进行初始化。
构造函数的小细节:当一个类中没有定义构造函数时,系统会默认给该类加一个空参数的构造函数;当在类中自定义了构造函数后,默认构造函数就没有了。
构造函数的作用:可以用于给对象进行初始化。
构造函数的小细节:当一个类中没有定义构造函数时,系统会默认给该类加一个空参数的构造函数;当在类中自定义了构造函数后,默认构造函数就没有了。
二、构造代码块
在类中直接用大括号{}括起来的代码块,在类被编译的时候执行,进行一些准备工作。与属性、方法并列存在。
class Person { private String name; private int age; /* 构造代码块 */ { System.out.println("crying……"); //中间定义的是函数的共性,只要定义对象不管什么对象,都会执行, } //并且优先于构造函数执行 Person() { System.out.println("A:name="+name+",age="+age); } Person(String n) { name=n; System.out.println("B:name="+name+",age="+age); } Person(String n,int a) { name=n; age=a; System.out.println("C:name="+name+",age="+age); } } class PersonDemo { public static void main(String[] args) { Person p1=new Person(); ///Person p2=new Person("李四"); ///Person p3=new Person("王五",10); } }
三、this
this一般来说有两种使用方式:
第一种是给当前对象属性付初值,例如tihs.name=name;
第二种是在一个构造函数中调用另外一个构造函数
/* this语句用于构造函数之间进行互相调用 */ class Person { private String name; private int age; Person(String name) { thisname=name; } Person(String name,int age) { //这里面一定要记住this后面没点 this(name); this.age=age; } } class PersonDemo { public static void main(String[] args) { System.out.println("Hello World!"); } }
四、三者的执行顺序
第一:构造代码块在编译的时候执行。
第二:构造函数在运行时候执行。
第三:this在构造函数执行时,调用另一个构造函数。
如有转载请请务必保留此出处:http://www.cnblogs.com/xiangyangzhu/