【JavaSE】一文看懂构造器/构造方法(Cunstructor)
🌱博主简介:大一计科生,努力学习Java中!热爱写博客~预备程序媛 📜所属专栏: ✈往期博文回顾: 🕵️♂️近期目标:成为千粉小博主。 🌺“再牛的程序员也是从小白开始,既然开始了,就全身心投入去学习技术”
Part1:引入
👩🎨write in the front:
-
【介绍】:构造器(又称:构造方法/Constructor)是类的一个特殊方法,在创建对象时会被系统自动调用,来完成对象属性初始化。
Part2:构造器介绍
2.1:构造器语法格式:
[访问修饰符] 构造器名 (形参列表){ 方法实现; } //修饰符可以为默认
-
举例:
public class Account { private String name; private double balance; private String pwd; //Account类的一个构造器 public Account (String name,double balance,string pwd){ //构造器的实现---初始化对象 this.name = name; this.balance = balance; this.pwd = pwd; }
2.2:You Should Know🌟:
🙆♀️注意事项&使用细节:
-
构造器没有返回值 构造器名/构造方法名必须和类名相同 没有在类中显示声明一个构造器时,系统默认存在并调用默认构造器—>类名(){ }
public class Account { private String name; private double balance; private String pwd; //当没有显示声明任何一个构造器时,下面这个构造器会在编译时候自动加上去,是一个默认构造器: public Account(){ } }
-
一个类中可以定义多个不同的构造器(不同主要体现在参数列表上),即构造器的重载 构造器的作用:在创建新对象时,完成对象初始化 一旦在类中声明定义了一个构造器,默认构造器将被覆盖,除非将默认构造器显示定义一下。
Part3:分析–构造器被调用过程
👩🎨write in the front:
-
🙇♀️构造器是完成新对象初始化的,不是用来创造对象的。即,对象先被创建,系统再去自动调用构造器/构造方法,来初始化对象。既然要搞清楚这个过程,我们必须了解–对象创建流程.
-
栗子
public class Account { private String name; private double balance=50; private String pwd; //Account类的一个构造器 public Account (String name,double balance,string pwd){ //构造器的实现---初始化对象 this.name = name; this.balance = balance; this.pwd = pwd; } class Test{ public static void main(String[] args) { //创建对象(构造器完成该对象初始化) Account account01 = new Account("Yaoayo",20,"123456"); }
🎨对象创建流程:
- 【类的加载阶段】首先,当读到Account account01 = new Account("Yaoayo",20,"123456")的时候,Account 类被加载进JVM内存方法区(只加载一次)
- 【类的初始化阶段】遇到new时,对类进行初始化:(只有类/接口首次被Java程序使用时才进行类的初始化–即仅初始化一次) 为类在方法区静态变量赋予默认初始值 执行类的静态代码块
- 【对象的内存分配】为新的实例对象在堆内存中分配内存空间
- 【对象的初始化阶段】 a.【默认初始化】:将成员变量赋予默认初始化值:name=null;balance=0.0;pwd=null; b.【显示初始化】:即执行在类声明中的手动赋值语句:balance=50; c.【构造器初始化】:JVM自动调用构造器/构造方法:name=“Yaoyao”;balance=20;pwd=“123456”;
- 【引用变量赋值】:将本次新对象在堆内存中地址以数字形式赋值给引用变量/类类型变量Account account01 = 0x423;