【JavaSE】一文看懂构造器/构造方法(Cunstructor)

news2024/9/19 23:13:33

在这里插入图片描述

🌱博主简介:大一计科生,努力学习Java中!热爱写博客~预备程序媛
📜所属专栏:Java冒险记【从小白到大佬之路】
✈往期博文回顾: 【JavaSE】保姆级教程|1万字+10张图学会类与对象–建议收藏
🕵️‍♂️近期目标:成为千粉小博主。
🌺“再牛的程序员也是从小白开始,既然开始了,就全身心投入去学习技术”

构造器/构造方法

  • Part1:引入
  • Part2:构造器介绍
    • 2.1:构造器语法格式:
    • 2.2:You Should Know🌟:
  • Part3:分析--构造器被调用过程

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");
    }

🎨对象创建流程:

  1. 【类的加载阶段】首先,当读到Account account01 = new Account("Yaoayo",20,"123456")的时候,Account 类被加载进JVM内存方法区(只加载一次)

  2. 【类的初始化阶段】遇到new时,对类进行初始化:(只有类/接口首次被Java程序使用时才进行类的初始化–即仅初始化一次)

    • 为类在方法区静态变量赋予默认初始值
    • 执行类的静态代码块
  3. 【对象的内存分配】为新的实例对象在堆内存分配内存空间

  4. 【对象的初始化阶段】
    a.【默认初始化】:将成员变量赋予默认初始化值:name=null;balance=0.0;pwd=null;
    b.【显示初始化】:即执行在类声明中的手动赋值语句:balance=50;
    c.【构造器初始化】:JVM自动调用构造器/构造方法:name=“Yaoyao”;balance=20;pwd=“123456”;

  5. 【引用变量赋值】:将本次新对象在堆内存中地址以数字形式赋值给引用变量/类类型变量Account account01 = 0x423;

在这里插入图片描述


🏄‍♀️下期预告–详细讲解JavaSE–this详解
🙆‍♀️专栏系列文章:

  • 【JavaSE】保姆级教程|1万字+10张图学会类与对象–建议收藏
  • 【JavaSE】多图解,保姆级详细讲解数组、二维数组–建议收藏
  • 【JavaSE】保姆级详细讲解Java中的方法:方法的重载,方法的签名、Java中随机数的生成

🙈原创不易,如果对你有所帮助,还请三连+关注!我是瑶瑶子,持续输出优质文章!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/177858.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSS边框、边距、轮廓(边框宽度/颜色/各边/简写属性/圆角边框/内外边距/高度宽度/框模型/轮廓宽度/颜色/属性/偏移)——万字长文|一文搞懂

目录 CSS边框 CSS 边框属性 CSS 边框样式 实例 CSS 边框宽度 实例 特定边的宽度 实例 CSS 边框颜色 实例 特定边框的颜色 实例 HEX 值 实例 RGB 值 实例 HSL 值 实例 CSS 边框 - 单独的边 实例 不同的边框样式 实例 它的工作原理是这样的: …

ROS学习寄录1

1 创建ROS工作空间 1.1 创建工作空间 (1)创建工作空间 mkdir catkin_ws (2)进入catkin_ws文件夹,然后创建一个src文件夹 cd catkin_ws mkdir src (3)进入src文件夹,生成CMakeL…

「自控原理」4.2 根轨迹法分析与校正

本节介绍利用根轨迹法分析系统性能发热方法 本节介绍根轨迹校正 文章目录利用根轨迹分析系统性能主导极点法增加零极点对系统的影响根轨迹校正串连超前校正原理与步骤超前校正例题串连滞后校正附加开环偶极子的作用原理与步骤滞后校正例题利用根轨迹分析系统性能 利用根轨迹分…

Oracle cloud vps实例配置访问

Oracle cloud vps实例配置访问创建一个免费配置的实例,并配置访问创建实例时,系统映像选择创建实例时候的ssh密钥配置子网,打开22端口使用工具登录服务器配置多个公钥,支持多个ssh私钥来登录登录vps实例修改登录用户和身份验证方式…

【接口】接口超时原因分析

接口超时的原因: 一、网络抖动 有可能是你的网络出现抖动、网页请求API接口、接口返回数据给网页丢包了。 二、被带宽占满 用户量暴增,服务器网络带宽被占满。 服务器带宽:一定时间内传输数据的大小,如:1s传输10M…

剑指Offer 第1天

第 1 天 栈与队列(简单) 剑指 Offer 09. 用两个栈实现队列 class CQueue { public: CQueue() {} void appendTail(int value) { s1.push(value); } int deleteHead() { while(!s1.empty()) { …

【Git :分布式版本控制工具】

【Git :分布式版本控制工具】 了解 Git 基本概念 能够概述 Git 工作流程 能够使用 Git 常用命令 熟悉 Git 代码托管服务 能够使用 IDEA 操作 Git 一、 概述 1. 开发中的实际场景 备份代码还原协同开发追溯问题代码的编写人和编写时间 2. 版本控制器的方式 集中式…

【数据结构】6.6 图的应用

文章目录生成树及其构造生成树的特点无向图的生成树6.6.1 最小生成树最小生成树及其典型应用MST性质构造最小生成树1. Prim(普里姆)算法2. Kruskal(克鲁斯卡尔)算法两种算法比较6.6.2 最短路径最短路径问题1. Dijkstra(迪杰斯特拉)算法迪杰斯特拉算法步骤2. Floyd(弗洛伊德)算法…

从零搭建一个组件库(二)创建代码规范

文章目录前言集成eslint1.安装2.替换默认解析器3.创建.eslintrc.yml配置文件4.创建忽略文件.eslintignore集成 prettier1.安装2.创建配置文件.prettierrc集成# commitizen1.安装2.修改package.json3.测试className的BEM规范1.安装2.BEM概述3.创建hooks函数4.使用hooks函数5.封装…

Vuex里面四个map方法(mapState、mapGetters、mapActions、mapMutation)

本章节主要讲述Vuex里面的四个优化代码的map方法,mapState、mapGetters、mapActions、mapMutation 一、store文件夹下面index.js主要内容,包含state(用于存储数据)、getters(计算属性)、mutatiions(加工数据)、actions(相应组件动作、写逻辑) 二、四个ma…

多个盒子排列规则(视觉格式化模型) 多个盒子的排列 页面布局

目录常规流常规流布局块盒的排列规则常规流 盒模型:规定单个盒子的规则 视觉格式化模型(布局规则):页面中的多个盒子排列规则 视觉格式化模型,大体上将页面中盒子的排列分为三种方式: 常规流浮动定位 …

react源码:目录结构、调试源码

我的技术栈是React,最近在整理react的源码,react版本是18.1.0,之前版本,没有看过,就此略过。 源码目录 从github将源码下载后,先看看源码目录结构,如下图所示: fixtures:代码贡献者提供的测试react package:react源码的主要部分,包含了Schedule、reconcile等等 s…

RadSystems Studio 8.1.8 Crack

RadSystems Studio 是一个用于快速开发和交付自定义应用程序的环境,快速应用开发环境,更快生成完整应用。RadSystems为生成现代应用程序和 API 提供了无数的设计选项和组件。很少或没有编码。无需专门的编程知识。可通过减少冗余编码时间来促进应用程序开…

Centos7 安装SkyWalking

Centos7 安装SkyWalkingCentos7 安装SkyWalking1 基础介绍1.1 概念1.2 核心三部分1.3 架构图2 快速安装2.1 前提条件2.2 拉取镜像2.3 启动SkyWalking2.4 访问SkyWalking UI界面Centos7 安装SkyWalking 1 基础介绍 1.1 概念 SkyWalking是一个国产的开源框架,2015年…

计算机组成原理3个实验-logisim实现“七段数码管”、“有限状态机控制的8*8位乘法器”、“单周期MIPS CPU设计”。

目录 标题1.首先是七段数码管 标题二:有限状态机控制的8*8位乘法器 标题三:单周期MIPS CPU设计 标题1.首先是七段数码管 1看一下实验要求: 2.接下来就是详细设计: 1. 组合逻辑设计 由于7段数码管由7个发光的数码管构成&#x…

信息论复习—率失真理论

目录 失真的概念: 信息率与失真的关系: 信息率失真理论: 失真函数矩阵: 平均失真度定义为: 平均失真度与信道转移概率的关系: 率失真函数: 率失真函数的物理意义: 率失真函数…

05 |「链表」必刷题

前言 前言:刷链表面试高频题。 文章目录前言一. 基础回顾二. 高频考题1、例题例题1:LeetCode 206 反转链表1)题目链接2) 算法思路3)源码剖析4)时间复杂度例题2:LeetCode 92 反转链表II1&#xf…

C++编译之(3)-camke/CMakeLists.txt的编译使用教程

引言 上一节介绍了前面我们介绍了make/Makefile来对c项目进行编译,我们继续以该项目为例讲解; C编译之(1)-g单/多文件/库的编译 C编译之(2)-make及makefile编译过程 我们先看看上一节的实战的目录结构如下: - mutilFilesDemo- include // 头…

Docker入门与应用

Docker入门与应用1.初识Docker1.1.什么是Docker1.1.1.应用部署的环境问题1.1.2.Docker解决依赖兼容问题1.1.3.Docker解决操作系统环境差异1.1.4.小结1.2.Docker和虚拟机的区别1.3.Docker架构1.3.1.镜像和容器1.3.2.DockerHub1.3.3.Docker架构1.3.4.小结1.4.安装Docker2.Docker的…

“华为杯”研究生数学建模竞赛2005年-【华为杯】D题:仓库容量有限条件下的随机存贮管理(附获奖论文)

赛题描述 工厂生产需定期地定购各种原料,商家销售要成批地购进各种商品。无论是原料或商品,都有一个怎样存贮的问题。存得少了无法满足需求,影响利润;存得太多,存贮费用就高。因此说存贮管理是降低成本、提高经济效益的有效途径和方法。 问题2 以下是来自某个大型超市的…