• Java-对象的构造及初始化


    1、构造方法

    1.1概念

    构造方法(也称构造器)是一个特殊的成员方法,名字必须与类名相同。
    作用:一般用来初始化成员属性和成员方法,即new对象产生后,就调用了对象的属性和方法。
    例:

    public class Student {
        public String name;
        public int age;
    
        public Student() {
            System.out.println("无参构造方法被调用啦!");
        }
        public Student(String name,int age) {
            System.out.println("有两个参数的构造方法被调用啦!");
        }
    
        public static void main(String[] args) {
            Student stu1 = new Student();//这里会调用无参构造方法
            Student stu2 = new Student("张三",18);//这里会调用两个参数的构造方法
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    1.2特点

    1. 名字必须与类名相同
    2. 没有返回值(不同于void类型返回值,void是没有具体返回值类型;构造函数是连类型都没有)
    3. 构造函数是对象一建立就运行,给对象初始化,就包括属性、执行方法中的语句(而一般函数是对象调用才执行,用".方法名"的方式给对象添加功能
    4. 创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次
    5. 构造方法可以重载(名字相同,参数列表不同,因此构成方法重载)
    6. 如果用户没有显式定义,编译器会生成一份默认的构造方法,生成的默认构造方法一定是无参的(注意:一旦用户定义,编译器则不再生成)
    7. 构造方法中,可以通过调用其他构造方法来简化代码(注意:this(…)必须是构造方法中第一条语句;并且调用不能成环)
    public class Student {
        public String name;
        public int age;
    
        public Student() {
            this("张三",18);//这里会调用两个参数的构造方法
            System.out.println("无参构造方法被调用啦!");
        }
        public Student(String name,int age) {
            System.out.println("有两个参数的构造方法被调用啦!");
        }
    
        public static void main(String[] args) {
            Student stu1 = new Student();//这里会调用无参构造方法
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    1. 一般函数不能调用构造方法,只有构造函数才能调用构造方法

    2、默认初始化

    为什么局部变量在使用时必须要初始化,而成员变量不用呢?
    要搞清楚这个过程,就要知道new关键字背后所发生的一些事情:
    在JVM层面要做以下事情:

    1. 检测对象对应的类是否加载了,如果没有加载则加载
    2. 为对象分配内存空间
    3. 处理并发安全问题(比如:多个线程同时申请对象,JVM要保证给对象分配的空间不冲突)
    4. 初始化所分配的空间,即:对象湖被申请好之后,对象中包含的成员已经设置好了初始值,比如:

    image.png

    1. 设置对象头信息
    2. 调用构造方法,给对象中各个成员赋值

    3、就地初始化

    在声明成员变量时,就直接给出了初始值。
    代码编译完成后,编译器会将所有给成员初始化的这些语句添加到各个构造函数中。
    tip:快速构建构造方法
    空白处右键 -> Generate -> Constructor
    image.png
    image.png
    image.png

  • 相关阅读:
    基于PHP+MySQL的物流配送管理系统平台
    django中Models常用的字段及属性介绍
    聊城农村生活污水处理之十四五规划方案介绍
    MPEG音频编码三十年
    FL Studio 21.2.3.3586 for Mac中文版新功能介绍及2024年最新更新日志
    【示波器专题】示波器的基本控制功能
    浅显易懂正则化-猛男技术控
    企业级java笔试题,面试题第二篇
    什么是Vue的JSX语法?如何使用JSX语法
    Eureka原理实践
  • 原文地址:https://blog.csdn.net/Yuan_o_/article/details/126297741