【Java SE】对象的构造及初始化

《Java SE实战指南》04:类结构和对象(Classes and Objects) 有类就不怕没对象。 阅读详情

1、利用构造方法初始化

构造方法(也称为构造器)是一个特殊的成员方法,名字必须与类名相同,在创建对象时,由编译器自动调用,并且在整个对象的生命周期内只调用一次。

<pre class="prettyprint hljs cs" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">public class Student {
    String name;
    // 无参构造方法(没有参数的构造方法)
    public Student() {
        this("张三");
    }
    // 有参构造方法
    public Student(String name) {
        this.name = name;
    }
    // 输出name和age
    public void print() {
        System.out.println("姓名:" + name);
    }
    public static void main(String[] args) {
        Student stu = new Student();
        stu.print();
    }
}

注意:

构造方法:名字与类名相同,没有返回值类型,设置为void也不行
一般情况下使用public修饰
在创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次

构造方法的作用就是对对象中的成员进行初始化,并不负责给对象开辟空间。

构造方法的特性:

1. 名字必须与类名相同
2. 没有返回值类型,设置为void也不行
3. 创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次(相当于人的出生,每个人只能出生一次)
4. 构造方法可以重载(用户根据自己的需求提供不同参数的构造方法)如上面的代码的无参和有参构造方法就构成了重载。

如果在类中自己没有定义任何构造方法,编译器会默认生成一个不带参数的构造方法。

但是如果自己定义了构造方法,则系统不会再生成,需要自己构造完善。

(当我们构造了带参数的构造方法的时候一定要去构造一个不带参数的构造方法,否则会出错)

另外在构造方法中,可以通过this调用其他构造方法来简化代码

<pre class="prettyprint hljs cs" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">public class Student {
    String name;
    // 无参构造方法(没有参数的构造方法)
    public Student() {
        this("张三");
    }
    // 有参构造方法
    public Student(String name) {
        this.name = name;
    }
    // 输出name和age
    public void print() {
        System.out.println("姓名:" + name);
    }
    public static void main(String[] args) {
        Student stu = new Student();
        stu.print();
    }
}

这里注意:
1、this(...)必须是构造方法中第一条语句
2、不能形成循环(也就是说不能在构造方法之间来回循环调用)

绝大多数情况下使用public来修饰,特殊场景下会被private修饰

2、利用默认初始化

我们知道局部变量在使用时必须要初始化,不进行初始化就会报错,而成员变量可以不用呢?

原因在于对象空间被申请好之后,对象中包含的成员已经设置好了初始值,比如:

3、就地初始化

就地初始化就是在定义成员变量的时候直接进行初始化操作:

<pre class="prettyprint hljs cs" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">public class Student {
    String name="张三";

    // 输出name和age
    public void print() {
        System.out.println("姓名:" + name);
    }
    public static void main(String[] args) {
        Student stu = new Student();
        stu.print();
    }
}

注意:代码编译完成后,编译器会将所有给成员初始化的这些语句添加到各个构造方法中(这里这个程序是系统默认的构造方法)

单细胞分析进阶:sctransform标准化在Seurat中的实战解析 本文深入解析了sctransform标准化方法在Seurat单细胞分析中的实战应用。通过对比传统对数标准化,sctransform能更有效地建模并剔除技术噪音,提升数据质量。文章提供了从环境配置、数据准备、核心参数解析到完整流程整合的详细指南,并针对常见问题给出解决方案,帮助研究者获得更清晰的细胞分群和更可靠的差异表达结果。 阅读详情

相关推荐

RunHarmony报错解析:如何解决data.use与cell.embeddings维度不匹配问题

本文深入解析了单细胞数据分析中RunHarmony函数报错'non-conformable arguments'的根源,即data.use与cell.embeddings矩阵维度不匹配。核心原因是assay(如RNA与integrated)错配导致细胞ID或数量不一致。文章提供了三种解决方案:最推荐显式指定assay.use参数,也可设置project.dim=FALSE或统一数据环境,并给出了最佳实践指南以避免此类错误。

weixin_29093017的博客 575

JaveSE基础--类和对象--“对象的构造及初始化”

JavaSE学习

weixin_52448590的博客 528

STM32F103单片机驱动TM1637数码管显示模块

最近项目中需要用到数码管显示,于是买了一个TM1637芯片驱动的四位数码显示模块,现将调试过程记录一下,方便以后参考。 使用的单片机是STM32F103C8T6最小系统 使用的数码管模块是TM1637四位数码管显示模块 实际运行效果 下面先看一下TM1637和数码管连接的具体线路图 实际使用的模块没有带按键,只用了4个数码管,模块和单片机连接只需要4根线VCC、GND、CLK、DIO。芯片和单片机通信使用的是I2C总线,下面就来说一下如何...

HXYDJ的博客 1万+

Java中对象的构造及初始化

对象的初始化

EXECEL的博客 1050

关于三维全波电磁场仿真软件CST的安装和问题解决

百度网盘链接:https://pan.baidu.com/s/1RgWr8Qau1EzSOlh29SewFQ提取码:fzza这里是2023版本的CST,需要其他版本的uu们可以去官网或者其他人的网盘下载。

weixin_60728441的博客 3599

别再乱按F8了!Win10系统修复的正确姿势:用管理员CMD运行sfc /scannow

本文详细介绍了Windows 10系统修复的正确方法,重点推荐使用管理员CMD运行`sfc /scannow`命令。相比传统的F8键和重装系统,这一方法更高效且安全,能解决大多数系统文件损坏问题。文章还提供了管理员CMD的启动方式、sfc命令的完整参数解析以及实战故障排除流程图,帮助用户快速恢复系统健康。

weixin_29218963的博客 457

C#中的构造方法与对象初始化器

文章目录1 C#中的构造方法1.1 默认的无参构造方法1.2 自定义的无参构造方法1.3 自定义的有参数的构造函数 C#中的方法类型主要有如下几种: 实例方法 静态方法 抽象方法、虚方法 构造方法(对象创建的时候使用) 这里首先看下构造方法。 1 C#中的构造方法 构造方法有什么作用? 因为构造方法是在对象创建的时候被调用的,所以,我们在创建对象的时候可以完成一些初始化的任务。初始化:包括给对...

木子皿--啥都不会的菜鸟 2680

在LinuxMint 22.1(Ubuntu24.04)上安装使用同花顺远航版

Linux用户成功在LinuxMint22.1系统上通过Wine9.0运行同花顺远航版,解决了长期困扰的股票行情软件问题。此前Linux原生版同花顺功能简陋且停止更新,Wine版通达信存在显示问题。作者作为自由软件支持者,通过调整Wine配置文件解决了高分屏显示异常问题,实现了远航版的正常使用。期待同花顺能重启Linux原生版开发,支持更多处理器架构,完善国产软件生态。该方案为Linux股票软件用户提供了实用参考。

5129

【JavaSE基础】对象的构造及初始化

在本章节中介绍了对象的初始化和构造方法。要点:1、构造方法的本质:当我们实例化一个对象的时侯,一定会进行两步操作:(1)为对象分配内存 (2)调用合适的构造方法。2、构造方法是一个没有返回值,类名相同,参数列表不同的多个方法。3、当写一个类时,编译器会帮我们默认生成一个不带参数的构造方法;但只要我们用户自己定义了一个构造方法,编译器就不会再默认生成一个。(一个类中至少会有一个构造方法,即使用户没有定义)。

kim的博客 1621

混合示教长短时记忆网络的车辆轨迹预测研究

论文"混合示教长短时记忆网络的车辆轨迹预测研究"中数据处理及MTF-LSTM模型实现代码,模型在Pytorch框架下实现。

ColinFhz的博客 1444

【实战篇】【硅基流动API+Cherry Studio搭建个人知识库全流程解析:从零到精通的超详细指南】

在人工智能技术高速发展的今天,基于大语言模型的知识库已成为开发者提效的必备工具。然而云端服务存在响应延迟、数据隐私、硬件依赖等痛点。通过硅基流动API与的深度整合,我们既能享受大模型的强大能力,又能实现本地化部署与高效管理。本文将从环境配置到高阶调优,手把手带你构建企业级知识库系统。

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 1081

构造方法以及对象初始化过程

一、构造方法  构造方法特点如下:  1. 没有返回类型,方法名必须和类名一致         2.构造方法不能手动调用,它只用在创建对象的时候,只出现在new之后,只要构造方法被调用运行,就一定有对象产生    3.在一个对象的生命周期里,构造方法只能被调用一次            4.类写好后一定有构造方法,如果程序没有显示的提供构造方法,系统

小波的专栏 2219

DeepSeek邮件管理全攻略

DeepSeek邮件助手是一款高效的邮件处理工具,提供智能分类、撰写、回复和任务自动化功能。通过API调用或多智能体系统,它能自动分类邮件意图、生成专业回复并优化邮件内容。核心功能包括智能过滤、会议安排和任务提醒,支持与主流邮箱服务集成。提供精准提示词模板,帮助用户快速生成得体邮件,提升工作效率。适合个人和企业使用,通过简单配置即可实现邮件处理自动化。

Genio_Wang的博客 180

【Java SE】7.2对象的构造及初始化

5.如果用户没有显示定义,编译器一定会生成一份默认的构造方法,生成的默认构造方法一定是无参的。注意:代码编译完成后,编译器会将所有给成员初始化的这些语句添加到各个构造函数中。上述Date类,没有定义任何构造方法,编译器会默认生成一个不带参数的构造方法。注意:构造方法的作用就是对对象中的成员进行初始化,并不负责给对象开辟空间。在Java方法内部定义一个局部变量时,必须要初始化,否则编译会失败。上述两个构造方法:名字相同,参数列表不同,因此构成了方法重载。构造方法是一个特殊的成员方法,

2301_79719531的博客 716

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【Java SE】类和对象(1)

本文摘要: Java类与对象基础概念总结:1.类是对实体的描述模板,采用大驼峰命名,包含属性和方法;2.通过new关键字实例化对象,可创建多个实例,成员变量有默认值;3.this关键字用于引用当前对象,可访问成员变量/方法,还能在构造方法间调用;4.构造方法需与类同名,无返回值,支持重载,编译器会生成默认无参构造;5.对象初始化分为默认初始化(赋予默认值)和就地初始化(编译时会加入构造方法)。文章还介绍了IDEA快速生成构造方法的技巧。

Boop_wu的博客 1212

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

final修饰的对象,有几种初始化的方式

final修饰的对象,有几种初始化的方式 final修饰的对象初始化分两种情况考虑 第一种:修饰成员对象时有3种初始化方式 修饰成员变量时直接赋值 声明完变量后在构造方法中为其赋值 声明完变量后在构造代码块当中为其赋值 第二种:修饰类对象(静态对象) 在定义类变量直接赋值 在静态代码块中直接赋值 代码解析 package com.liqh; public class TestFina...

lqh102133042的博客 1024

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java SE —— 类与对象(万字长文)

在数字世界的晨曦中,Java的类与对象如同星辰与尘埃,编织着代码宇宙的秩序与生命。想象一座尚未落成的城市——蓝图是它的骨骼,勾勒出楼宇的轮廓与街道的脉络;而每一栋建筑、每一盏路灯、甚至风中摇曳的梧桐,都是蓝图的具象,是图纸在现实中的呼吸。

2401_88688442的博客 1150

【Java SE】类和对象详解

类的定义和使用,类的实例化,this引用,构造方法,对象的初始化,封装,static成员,代码块

qq_68661624的博客 1414

Java SE 类和对象

在Java中定义类时需要⽤到class关键字field;// 字段(属性) 或者 成员变量method;// ⾏为 或者 成员⽅法class为定义类的关键字,ClassName为类的名字,{}中为类的主体,类中包含类的成员变量和类的成员方法。类的成员之前要加访问修饰符,例如public,一个学生类的定义如下所示注意事项:⼀般⼀个⽂件当中只定义⼀个类public修饰的类必须要和⽂件名相同在⽂件的最上⽅加上⼀个 package 语句指定该代码在哪个包中.包名需要尽量指定成唯⼀的名字.

xin_nai的博客 715

【Java se】类和对象

Java是一门纯面向对象的语言,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。1.2面向对象与面向过程1.2.1传统洗衣服过程注重的是洗衣服的过程,少了一个环节可能都不行。而且不同衣服洗的方式,时间长度,拧干方式都不同,处理起来就比较麻烦。如果将来要洗鞋子,那就是另一种放方式。按照该种方式来写代码,将来。

m0_73893082的博客 923

【Java SE】类与对象的认识

本文介绍了面向对象编程中类与对象的核心概念。首先对比了面向过程与面向对象的不同思维方式,通过洗衣机的例子说明面向对象更关注对象间的协作。然后详细讲解了类的定义格式、成员变量和方法的声明方式,以及类的实例化过程。重点阐述了this引用的作用及其特性,解释其作为成员方法隐藏参数的工作原理。最后介绍了对象的构造方法,包括构造方法的重载、默认初始化规则和使用this调用其他构造方法的注意事项。文章通过代码示例展示了如何定义类、实例化对象以及正确使用this引用,帮助读者理解面向对象编程的基本概念和实现方式。

记录了从0学习Java技术栈的日常 1165

JAVASE

JAVASE基础语法前言一、构造器二、构造方法的作用二、语法结构 前言 提示:这里面省略了javase前面的基础语法,是作者本人正式接触csdn时候写的语法,之前做的笔记全部都在电脑本机,所以就开始从构造器开始写吧。在这里插入代码片 提示:以下是本篇文章正文内容,下面案例可供参考 一、构造器 含义:构造器就是构造方法也叫构造函数。 注意:构造器是系统默认会定义的也称之无参构造构造器不能自定义名称,无返回值,需要和类名一致。 二、构造方法的作用 1.创建对象 2.创建对象的同时,初始化实例变量的内存空间

weixin_45087447的博客 295

Java SE 6.类与对象(完结)

本文涉及内容:static成员变量初始化、代码块和对象的打印。 本文将把类与对象的剩余内容补完,若对本文的内容衔接不上,还请回到第一部分和第二部分。

2301_80037974的博客 354

【Java SE】类与对象

类是Java面向对象编程中最基本的组成单位,它是一种抽象的数据类型,用于描述具有相同属性和行为的一组对象。类是创建对象的模板或蓝图。[修饰符] 数据类型 变量名 [= 初始值];修饰符分类具体修饰符访问控制publicprotectedprivate静态修饰static常量修饰final特性修饰transientvolatile// 成员变量定义// 公有访问// 私有访问// 受保护访问static String country = "中国";// 静态变量// 常量。

695

JAVA SE:认识类和对象

JAVA SE :初识类和对象

2402_83501061的博客 673

【Java SE】面向对象编程(基础)

局部变量表存放了编译期可知长度的各种基本数据类型(boolean、byte、char、short、int、float、long、double)、对象引用(即引用类型,它不等同于对象本身,是对象在堆内存的首地址)。(系统生成的无参构造器的修饰符看类的修饰符跟类是一致的)。Constructor = 构造器 = 构造方法,是类的一种特殊的方法,它的主要作用是。前提下,如果通过其中某一个对象变量修改对象的属性时,会影响另一个对象变量此属性的值。(1)类是抽象的,代表一类事物,比如人类,猫类,类是一种。

m0_55908255的博客 947
上一篇: Java——Spring事务属性、事务传播行为
下一篇: 13个Redis面试题,你都知道哪些?
Java_ttcd
博客等级 码龄4年 198粉丝 190原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值