🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
1.构造代码块 ~~~ package obj.b1; public class Test { public static void main(String[] args) { Person p1 =new Person(); Person p2 =new Person("小李"); } } /* * 对象一建立就运行了,而且优先于构造函数执行 * 给对象进行初始化的 * 构造代码块和构造方法的区别: * 构造方法是对应的对象进行初始化, * 构造代码块是给所有的对象进行统一的初始化 * 构造代码块中定义是不用对象共性的初始化内容 * * */ class Person{ String name; Person(){ System.out.println("我是无参构造方法"); } Person(String name){ System.out.println("我是有参构造方法"); } { System.out.println("我是构造代码块"); } } ~~~ ![](https://box.kancloud.cn/53e7806b35b54eb450fc3ef6bde5c11a_170x133.png) 2.构造方法之间的调用 ~~~ package obj.b2; public class Test { public static void main(String[] args) { Student s=new Student("小明",2); } } /* * this:看上去,用来区分局部变量和成员变量同名的情况 * this:就是代表本类对象,this代表它所在函数(方法)所属对象的引用 * 构造函数之间的调用只能通过this语句来完成 * 构造函数之间进行调用时,this语句只能出现在第一行,构造方法要先执行, * 如果初始化当中还有初始化,那就去执行更细节的初始化 * */ class Student{ String name; int age; Student(){ System.out.println("无参构造方法"); } Student(String name){ this(); this.name=name; System.out.println("aaa"); } Student(String name,int age){ this(name); this.age=age; } } ~~~ ![](https://box.kancloud.cn/36467009771d27c02ae44940df8c7e92_299x83.png)