【JAVA】this关键字和static关键字

news2024/11/21 1:26:15

目录

1.this关键字

2.static关键字

 容易混淆的问题


1.this关键字

一个对象一个this。this是一个变量,是一个关键字,是一个引用。this保存当前对象的内存地址,指向自身。所以,严格意义上来说,this代表的就是“当前对象”,this存储在堆内存当中对象的内部。

1.this修饰成员变量,表示直接去类中找同名变量

例如:在下面这个代码的有参构造方法中,本意是想给成员变量赋值,可是却根本没有调用到类中的成员变量

 要在方法中明确调用类中的成员变量,只需要加上this关键字即可。

2.this修饰方法

①this修饰成员方法,表示直接从当前类中寻找同名方法

语法:this.方法名称(参数)

举例:

②this修饰构造方法

 语法:this(参数)表示调用构造方法

三大要求:

a.this调用构造方法只能在构造方法中使用,不能在成员方法中使用。

b.this调用其它构造方法必须卸载当前构造方法的首行

c.this调用必须是线性的,不能成环

举例:

若是实例化对象:Cat cat=new Cat("喵喵","母",1)

则会调用三个参数的构造方法,此方法又会调用两个参数的构造方法,这个方法又会调用无参构造。就形成了环,程序永远无法终止。

2.static关键字

static修饰的属性/方法都称为类的静态域,静态域没有该类的对象就能访问,直接通过类名称来访问。

1.static修饰属性,则该属性为静态变量,直接通过类名称来调用,存储在JVM的方法区,该类的所有对象共享此变量。(只要有一个对象改变了该属性,对其它对象都是可见的)

类中的有些属性是类本身所具备的属性,和具体的某个对象无关,该类中的所有对象这个属性值都是相同的。这个属性就用static修饰。

例如:中国的所有人员国籍这个属性都是相同的,都是中国。

注意:

a.static变量只存在于类中,方法中不能定义静态变量

b.静态属性直接通过类名称来访问,没有任何该类对象,这个属性也是存在的

c.静态变量存储在JVM的方法区,所有该类对象共享

 这里定义了一个Japanese类,定义了一个静态成员变量country(国籍)。在main()方法中实例化一个Japanese对象,即j1和j2。

当Japanese类加载到JVM内存之中,静态方法就会在方法去初始化并存储。

2.static修饰的方法称为类方法/静态方法,和具体对象无关,通过类名称直接访问。

语法:类名称.静态方法名称()

举例:

 容易混淆的问题

1.能否用static修饰一个类?

答:不能。类定义出来是为了产生对象,而static修饰的东西不需要对象也能访问,自相矛盾了。

2.在静态方法中能否访问成员域?

答:不能。成员域有对象才能访问,而静态方法中不需要对象。

3.在成员域中能否访问静态域?

答:可以。成员域中一定有对象,而静态方法无论有没有对象都可以访问。

4.能否在静态方法中使用this关键字?

答:this关键字修饰的是当前对象的属性或者方法,this是成员域的一部分。在静态域中不能出现this关键字。

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

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

相关文章

Avada学习之-如何加入谷歌地图

如何正确设置谷歌地图 在给Wordpress网站配置谷歌地图时,常常会出现谷歌地图无法显示的问题。具体提示为Oops! something went wrong,如下图。出现这种问题有如下原因。 内容 隐藏 一、地址不正确 二、API 没填 三、插件冲突 一、地址不正确 很多…

iOS正确获取图片参数深入探究及CGImageRef的使用

一 图片参数的正确获取 先拿一张图片作为测试使用 图片参数如下: 图片的尺寸为: -宽1236个像素点 -高748个像素点 -色彩空间为RGB -描述文件为彩色LCD -带有Alpha通道 请记住这几个参数,待会儿我们演示如何正确获取。 将这张图片分别放在…

光纤衰减器作用及使用说明

在光纤通信中,光信号的强度过大或过小都会对信号的传输和接收产生不良的影响,因此光衰减器在光通信系统中起到了重要的作用。那什么是光衰减器呢?它又有什么作用呢?下面跟着小易一起来了解一下吧! 一、什么是光纤衰减…

APP自动化测试工具的作用和特点

随着移动应用的迅速发展,APP的自动化测试工具变得越来越重要。APP自动化测试工具可以帮助开发者在应用程序的不同平台上执行测试,从而检测和确保应用程序的完整性、稳定性和可靠性。下面将介绍APP自动化测试工具的作用和特点。 一、作用 提高测试效率&am…

Android自定义控件——控件的测量和绘制

控件的测量和绘制 控件架构setContentView()MeasureSpecViewView的测量View的绘制 ViewGroupViewGroup的测量ViewGroup的绘制 自定义View对现有控件进行扩展案例一:添加背景案例二:文字闪动 创建复合控件重写View实现全新控件案例一:弧线展示…

FLEXPART--空气块轨迹-扩散模式

模式简介: FLEXPART(Flexible Particle Dispersion Model)模式是由挪威大气研究所(Norwegian Institute for Air Research)和德国慕尼黑工业大学(Technical University of Munich)联合开发的空气块轨迹-扩散模式, 其通过计算区域内所有气块的运动轨迹进…

PLE - 多任务模型(腾讯)

文章目录 1、动机2、模型结构3、代码实现细节: Progressive Layered Extraction (PLE): A Novel Multi-Task Learning (MTL) Model for Personalized Recommendations论文发表在 RecSys-2020, best paper。ple主要缓解了mtl里两大问题:负迁移…

如何在海量、庞杂、混合的数据中发现价值?

数字时代,数据上升为国家战略,数据成为重要的生产要素和资产,得到了越来越多企业的重视,也成为企业数字化转型的重要抓手。据IDC中国预测,2025年中国大数据生产量有望增长至48.6ZB。 随着越来越大的数据量&#xff0c…

【C++从0到王者】第六站:类和对象(下)

文章目录 一、再谈构造函数1.构造函数体赋值2.初始化列表1>初始化列表的使用2>初始化列表的注意事项 3.explicit关键词 二、static成员1.如何统计当前程序中变量的个数2.static的特性3.从1加到n4.设计一个类,只能在栈或者堆上开辟空间 三、友元1.友元函数2.友…

一个简化、落地的实时数据仓库解决方案

从传统的经验来讲,数据仓库有一个很重要的功能是记录数据变化历史。通常,数据仓库都希望从业务上线的第一天开始有数据,然后一直记录到现在。但实时处理技术,又是强调当前处理状态的一门技术,所以当这两个相互对立的方…

聚合数据证件识别接口-基于PHP示例代码

1、开通接口 以下代码示例基于聚合数据提供的证件识别接口,使用前需要先注册申请本接口,获得请求密钥key。 接口文档地址:https://www.juhe.cn/docs/api/id/153 2、功能介绍 通过自动识别的方式获取常规证件文字内容,免去用户…

react函数式组件转化为string---renderToString

需求 使用aggrid的过程中,某个自定义的图标需要传dom的字符串。 但在react的开发中,一般都是组件的概念(ReactNode,JSX.Element) 因此需要一个方法将dom组件转化为字符串 收获 找到了官网的API——renderToString 作…

虚拟主机部署ssl证书(https)流程

注意事项: 1、域名要做别名解析指向二级域名 2、证书已经申请完成,其他公司的证书要下载导入到西部数码。 虚拟主机部署教程如下: 部署证书 首先要将域名绑定到主机上,在主机控制面板找到【SSL部署】按钮。 在西部数码申请过证…

FFmpeg 媒体文件播放 格式变化流程简述

例如,要播放一个 MP4 文件,这个文件要经过啥呢? 一个 MP4 文件中包含了:视频压缩数据流(如H.264、H.265)和音频压缩数据(如aac、MP3) 首先需要经过解码成为原始数据,视频…

数据库原理及应用上机实验一

✨作者:命运之光 ✨专栏:数据库原理及应用上机实验报告整理 目录 ✨一、实验目的和要求 ✨二、实验内容与步骤 🍓🍓前言: 数据库原理及应用上机实验报告的一个简单整理后期还会不断完善🍓🍓…

HarmonyOS低代码开发-创建新工程方式

使用低代码开发应用或服务有以下两种开发方式: 创建一个支持低代码开发的新工程,开发应用或服务的UI界面。在已有工程中,创建Visual文件来开发应用或服务的UI界面。ArkTS工程和JS工程使用低代码的步骤相同,接下来以JS工程为例讲解…

Web自动化框架中验证码识别处理全攻略,自动化测试神器,让测试更得心应手。

目录 前言: 一. Web自动化测试框架搭建 1. 选择一个自动化测试工具 2. 安装环境 3. 初始化一个Selenium驱动 二. 添加自动化测试用例 1. 编写测试脚本 2. 运行测试脚本 三. 验证码识别与处理 1. 验证码种类 2. 验证码处理方式 四. 结语 Web自动化测试&#…

指针不可怕,请爱它呵护它(狗头)

🤩本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 🥰内容专栏:这里是《C知识系统分享》专栏,笔者用重金(时间和精力)打造,基础知识一网打尽&#xff0c…

opencv_c++学习(十一)

一、绘制基础图形 绘制直线: line(InputOutputArray img. Point pt1, Point pt2, const Scalar & color, int thickness 1,llineType int LINE_8, int shift 0pt1:直线起始点在图像中的坐标。 pt2:直线终点在图像中的坐标。 color:直线的颜色,…

《2023新一代数字办公白皮书》正式发布!| 爱分析报告

2023年5月12日,受北京市数字办公安全创新联合体委托,由自主可控新鲜事和爱分析联合撰写的《2023新一代数字办公白皮书》(以下简称《白皮书》)在“2023通明湖论坛 信创基础底座创新发展分论坛”上正式发布。 《白皮书》详细阐述了新…