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

目录

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关键字。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

顶象助力如祺出行打造高品质服务

近日,广东省自然资源厅审批通过了如祺出行提交的测绘资质申请,如祺出行获得地理信息系统工程和互联网地图服务两个专业的乙级测绘资质。此次获批意味着,如祺出行能够在许可区域内依法合规开展数据标注和场景仿真等相关业务,构建全…

【Spring框架全系列】第一个Spring程序

🏙哈喽,大家好,我是小浪。那么从今天开始,我就要开始更新spring框架全系列的博客了;本专栏免费阅读,最好能够点个订阅,以便于后续及时收到更新信息哈!🏟 📲目…

全网最详细,性能测试各种测试场景分析+性能测试基准测(超细总结)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 面对日益复杂的业…

生成一个手绘图为底图的导游图

目录 1 前言 2 新增一个景区 3 生成验证码用于上传手绘图切片 4 免费下载切图客户端并配置、切图 5 增加景点 1 前言 上一篇演示了制作一个简版导游图。简版导游图的优点是制作简单、快速,不需要第三方软件,缺点是略显简陋、不够专业。 本编介绍制…

【Linux】信号概述

目录 1、信号概念2、Linux常用信号表3、信号的5种默认处理动作 橙色 1、信号概念 信号是 Linux进程间通信的最古老的方式之一,是事件发生时对进程的通知机制,有时也称之为软件中断,它是在软件层次上对中断机制的一种模拟,是一种…

两小时搭建属于自己的chatGPT(ChatGLM)免硬件(白嫖)

目录 准备(注册): 搭建: API模式: 测试: 总结: 准备(注册): 注册modelscope(白嫖)免费使用服务器 https://modelscope.cn/ 按照图片里的选择(选择其他好像不能创建成功) 可以白嫖60多个小时的配置 8…

新星计划 Electron+vue2 桌面应用 1 基础

/(ㄒoㄒ)/~~报名了两个新星计划,工作之余写博客…… 另外一个是uniapp的属于个人兴趣,这个桌面应用正好符合工作需要。 活动地址:https://marketing.csdn.net/p/1738cda78d47b2ebb920916aab7c3584 教程地址: 2023新星导师活动…

基于FPGA+JESD204B 时钟双通道 6.4GSPS 高速数据采集设计(三)连续多段触发存储及传输逻辑设计

本章将完成数据速率为 80MHz 、位宽为 12bits 的 80 路并行采样数据的连续多 段触发存储。首先,给出数据触发存储的整体框架及功能模块划分。然后,简介 MIG 用户接口、设置及读写时序。最后,进行数据跨时钟域模块设计,内存…

【瑞萨RA系列FSP库开发】RASC+Keil的环境搭建

文章目录 一、获取资源包二、安装 Keil 软件、RA 芯片包和 RASC三、RASC 集成到 Keil四、使用 RASC 生成 Keil 工程五、通过 Keil 打开 RASC 的 FSP 配置器界面六、配置和编译 Keil 工程七、使用调试器下载程序 本节将介绍如何在Keil上开发瑞萨RA MCU (如需了解 e2 …

百汇BCR:十个外汇交易常见问题解析

外汇交易是一种受到市场欢迎的投资方式,参与交易很容易,但想要盈利却很难。特别是一些细节问题容易被忽略,百汇BCR小编整理了十个外汇交易常见问题供有需要的投资者借鉴学习。 问题一、外汇开户需要哪些资料? 个人相关信息资料、…

20 KVM管理虚拟机-虚拟机生命周期示例

文章目录 20 KVM管理虚拟机-虚拟机生命周期示例20.1 创建虚拟机20.2 启动虚拟机20.3 重启虚拟机20.4 关闭虚拟机20.5 销毁虚拟机 20 KVM管理虚拟机-虚拟机生命周期示例 本节给出虚拟机生命周期管理相关命令的示例。 20.1 创建虚拟机 虚拟机XML配置文件为openEulerVM.xml # …

Windows批处理指令

前言 批处理文件(batch file)包含一系列 DOS 命令,通常用于自动执行重复性任务。用户只需双击批处理文件便可执行任务,而无需重复输入相同指令。编写批处理文件非常简单,但难点在于确保一切按顺序执行。编写严谨的批处…

使用mkdocs快速部署上线静态站点到Github

背景 mkdocs是一种方便地生成站点的工具,相比hugo、hexo等个人博客而言,mkdocs更加简便、轻量级,可以快速帮助部署上线类似个人技术本(notebook,wiki)之类的站点。并且支持默认支持站点内搜索,…

基于SSM的网上宠物店

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

网络基础进阶

1、交换机接口类型 Console口:也称为:串口接口,一般用于与PC连接,用于配置和监控交换机。百兆以太网接口:用于连接计算机和交换机之间的通信。Console到的网络接口:俗称交叉串口,是用于连接交换…

微信小程序xr-frame实现多光源效果

1.基础知识: 灯光 灯光组件Light用于给场景提供照明,也是阴影的核心。相机组件一般被代理到灯光元素XRLight中使用,其派生自XRNode,对应在xml中的标签为xr-light。 主光源以及参数 类型uniforms宏说明书写环境光颜色和亮度u_a…

2023年门店管理系统如何选?简单好用的门店管理系统有哪些?

开单收银效率低、商品管理混乱、记账对账耗时耗力还易出错...... 是我们在进行门店管理过程中常见的问题。 为了改善门店管理遇到的这几大问题,提高门店管理效率,越来越多的门店开始使用门店管理系统。 但如何选择简单实用、性价比高的门店管理系统&…

template和component自定义组件之间的区别

在小程序中自定义组件 component 方式和组件模板 template 2种方式实现页面组件化。 一、component自定义组件 1.概念 自定义组件是指可以被多个页面使用的组件,可以在小程序中多次复用。在开发中可以将一个页面中的代码和样式抽象出来,然后创建一个自定…

springboot缓存

1. 认识缓存 一级缓存 - 缓存是一种介于数据永久存储介质与数据应用之间的数据临时存储介质 - 使用缓存可以有效的减少低速数据读取过程的次数,提高系统性能 Service public class BookServiceImplCache implements BookService {Autowiredprivate BookDao book…

Java | 一分钟掌握定时任务 | 3 - 单机定时之Timer

作者:Mars酱 声明:本文章由Mars酱原创,部分内容来源于网络,如有疑问请联系本人。 转载:欢迎转载,转载前先请联系我! 介绍 这个是个JDK远古时代的api了,据考证,可以追溯到…