Java中的 this 关键字是什么意思? this() 又是什么?

目录

    • 问题
      • 问题一:什么是this关键字?
      • 问题二:什么是this()?

问题

问题一:什么是this关键字?

定义:this 代表当前对象。这个定义比较抽象,举例来回答。
思考一个问题:如果没有 this 会怎样? 如图:如果没有 this,那么在通过方法对类成员变量赋值时,左边的变量我们以为是成员变量,但实际上却是局部变量,成员变量并没有发生改变,编译器会根据就近原则,把左边的 year 当成传递进来的参数,“我给我自己赋值”,相当于我给我自己发工资,显然不太合理。在这里插入图片描述

而 this 关键字就表明,你传递进来的参数是给哪个对象里面的成员变量进行赋值的,如图:this 引用其实被编译器隐藏起来了,对象 d1 调用了这个方法,这个this就代表了d1这个对象,指名道姓地给这个 d1 里面的变量赋值,这样编译器就知道你传入的参数是给 d1 的了。
在这里插入图片描述

注:this 只能在成员方法中使用(在其他地方也使用不了)


问题二:什么是this()?

this() 可以在类的构造方法中调用该类的其他的构造方法。

为什么要有 this() ?它有啥用?
打个比方,比如说顺序表这个数据结构,当我们 new ArrayList 的时候,并没有传参,但仔细想一想,我们都没给他顺序表的长度,它怎么能构造出顺序表的呢?
this() 就可以搞定,ArrayList 完全可以在无参构造方法中调用 this(),让它去调用其他有参构造方法,简单来说就是创造者为了让我们傻瓜式使用这些类,他在内部中帮我们自动初始化顺序表大小、自动扩容等等操作,而我们不必费心去了解其内部结构,只需要简单的一步就能够使用顺序表这一数据结构。(虽然实际上 ArrayList 并不是这么实现的,这里只是用最熟悉的数据结构来打个比方,用 this() 也是可以完成的)

注:this() 的优先级是最高的,需要在构造方法中放在第一执行位上。

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

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

相关文章

鸿蒙开发学习笔记2

一、class 类 类是用于 创建对象模版。同时类声明也会引入一个 新类型,可定义其 实例属性、方法 和 构造函数。 // 类名 首字母大写(规范) class 类名 {// 1、实例属性(字段)// 2、构造函数// 3、方法 }1、属性&…

如何追踪ping连接中的所有路由器的数量和IP

如何快速判断ping连接经过的路由器个数和IP? 方法一: ping命令会返回一个TTL,TTL(Time To Live)存活时间,一般初始值为64,每经过一个路由器就减一,当TTL为0时丢弃网络包&#xff0…

“Numpy数据分析与挖掘:高效学习重点技能“

目录 # 开篇 # 补充 zeros & ones eye 1. numpy数组的创建 1.1 array 1.2 range 1.3 arange 1.4 常见的数据类型 1.5 astype 1.6 random.random() & round 2. numpy数组计算和数组计算 2.1 reshape 2.2 shape 2.3 将一维数组变成多维数组 2.4 指定一维…

0010基于免疫遗传算法的配送中心选址

免疫优化算法(Immune Optimization Algorithm, IOA)在物流配送中心选址中的应用是通过模拟免疫系统的进化过程来解决选址优化问题。物流配送中心选址问题涉及到如何在给定区域内选择最优的位置,以最大化服务覆盖并最小化运输成本。 免疫优化…

我的FPGA

1.安装quartus 2.更新usb blaster驱动 3.新建工程 1.随便找一个文件夹,里面新建demo文件夹,表示一个个工程 在demo文件夹里面,新建src(源码),prj(项目),doc&#xff…

压缩感知2——算法模型

采集原理 其中Y就是压缩后的信号表示(M维),Φ表示采集的测量矩阵,可以是一个随机矩阵,X代表原始的数字信号(N维)。 常见的测量矩阵——随机高斯矩阵 随机伯努利矩阵 稀疏随机矩阵等,矩阵需要满足与信号的稀…

AWS无服务器 应用程序开发—第十七章 Application Composer

Application Composer 是 AWS 提供的一种可视化工具,用于设计和构建无服务器应用程序。它通过拖放界面简化了无服务器架构的创建过程,使开发者能够更直观地设计和配置应用程序的各个组件。 主要功能 可视化设计 通过拖放界面,开发者可以轻松地添加和配置 AWS 资源,如 L…

2-29 基于matlab的CEEMD

基于matlab的CEEMD(Complementary Ensemble Empirical Mode Decomposition,互补集合经验模态分解),先将数据精心ceemd分解,得到imf分量,然后通过相关系数帅选分量,在求出他们的样本熵的特征。用…

【深度学习】第5章——卷积神经网络(CNN)

一、卷积神经网络 1.定义 卷积神经网络(Convolutional Neural Network, CNN)是一种专门用于处理具有网格状拓扑结构数据的深度学习模型,特别适用于图像和视频处理。CNN 通过局部连接和权重共享机制,有效地减少了参数数量&#x…

使用OpencvSharp实现人脸识别

在网上有很多关于这方面的博客,但是都没有说完整,按照他们的博客做下来代码都不能跑。所以我就自己写个博客补充一下 我这使用的.NET框架版本是 .NetFramework4.7.1 使用Nuget安装这两个程序包就够了,不需要其他的配置 一定要安装OpenCvSha…

在亚马逊云科技AWS上利用SageMaker机器学习模型平台搭建生成式AI应用(附Llama大模型部署和测试代码)

项目简介: 接下来,小李哥将会每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践,并应用到自己的日常工作里。本次介绍的是如何在Amazon …

802.11漫游流程简单解析与笔记_Part2_05_wpa_supplicant如何通过nl80211控制内核开始关联

最近在进行和802.11漫游有关的工作,需要对wpa_supplicant认证流程和漫游过程有更多的了解,所以通过阅读论文等方式,记录整理漫游相关知识。Part1将记录802.11漫游的基本流程、802.11R的基本流程、与认证和漫游都有关的三层秘钥基础。Part1将包…

220V降5V芯片输出电压电流封装选型WT

220V降5V芯片输出电压电流封装选型WT 220V降5V恒压推荐:非隔离芯片选型及其应用方案 在考虑220V转低压应用方案时,以下非隔离芯片型号及其封装形式提供了不同的电压电流输出能力: 1. WT5101A(SOT23-3封装)适用于将2…

【实战场景】大文件解析入库的方案有哪些?

【实战场景】大文件解析入库的方案有哪些? 开篇词:干货篇:分块解析内存映射文件流式处理数据库集群处理分布式计算框架 总结篇:我是杰叔叔,一名沪漂的码农,下期再会! 开篇词: 需求背…

14-57 剑和诗人31 - LLM/SLM 中的高级 RAG

​​​ 首先确定几个缩写的意思 SLM 小模型 LLM 大模型 检索增强生成 (RAG) 已成为一种增强语言模型能力的强大技术。通过检索和调整外部知识,RAG 可让模型生成更准确、更相关、更全面的文本。 RAG 架构主要有三种类型:简单型、模块化和高级 RAG&…

Git安装使用教程

# 《Git 操作使用教程》 一、Git 简介 Git 是一个分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。它让开发者可以轻松地跟踪代码的更改、与团队成员协作,并管理项目的不同版本。 二、安装 Git 在 Windows 系统上,可以从 Git 官…

无法连接Linux远程服务器的Mysql,解决办法

问题描述 如果是关闭虚拟机之后,二次打开无法连接Mysql,则可尝试一下方法进行解决 解决方法 关闭虚拟机的防火墙 1:查看防火墙状态 systemctl status firewalld 一下显示说明防火墙是启动的状态 2:关闭防火墙 systemctl st…

PTA - 编写函数计算圆面积

题目描述: 1.要求编写函数getCircleArea(r)计算给定半径r的圆面积,函数返回圆的面积。 2.要求编写函数get_rList(n) 输入n个值放入列表并将列表返回 函数接口定义: getCircleArea(r); get_rList(n); 传入的参数r表示圆的半径&#xff0c…

压缩感知1——算法简介

传统的数据采集 传统的数字信号采样定律就是有名的香农采样定理,又称那奎斯特采样定律定理内容如下:为了不失真地恢复模拟信号,采样频率应该不小于模拟信号频谱中最高频率的2倍 上述步骤得到的数字信号的数据量比较大,一方面不利…

C语言程序题(一)

一.三个整数从大到小输出 首先做这个题目需要知道理清排序的思路,通过比较三个整数的值,使之从大到小输出。解这道题有很多方法我就总结了两种方法:一是通过中间变量比较和交换,二是可以用冒泡排序法(虽然三个数字排序…