关于java语言当中的this关键字

news2024/9/20 16:52:07
/**
 * 关于java语言当中的this关键字:(其内存图见下图)
 *     1、this是一个关键字,翻译为:“这个”
 *     2、this是一个引用,它是一个变量,this变量中保存的内存地址指向了自身,this存储在JVM堆内存java对象的内部
 *     3、每个java对象中都有this这个变量,创建多少个对象,就有多少个this。
 *     4、this出现在“实例方法”当中,this指向当前正在执行这个动作的对象。(this代表当前对象)
 *     5、多数情况下this是可以省略的。
 *     6、this不能在带有static的方法中直接使用,在静态方法中不能直接访问实例变量和实例方法,因为访问实例变量和实例方法都需要对象的存在
 *     7、this什么时候不能省略:用来区分实例变量和局部变量的时候“this”不能省略(比如:有参构造方法和setter方法中this不能省略)
 *     8、this可以使用在构造方法当中,作用是通过当前的构造方法调用其他构造方法,作用是代码复用
 *              -  语法格式:this(实参);
 *              -  this()这种语法只能出现在构造方法的第一行
 */
public class ThisText {
//    实例变量
    int i = 20;
//    静态变量
    static int k = 10;
//    静态方法
    public static void doSome(){
        System.out.println("do some!");
    }
//    实例方法
    public void doOther(){
        System.out.println("do other!");
    }
//    静态方法
    public static void method1(){
//        在静态方法中调用静态方法doSome 完整的方式
        ThisText.doSome();
//        同一个类中静态方法调用静态方法doSome 的省略方式
        doSome();

//        在静态方法中调用实例方法doOther 需要有对象的参与 完整的方式如下
//        创建ThisText对象
        ThisText t1 = new ThisText();
        t1.doOther();
//        在静态方法中调用实例方法doOther 没有省略的方式

//        在静态方法中访问静态变量k的完整方式
        System.out.println(ThisText.k);
//        在静态方法中访问静态变量k的省略方式(省略"类名.")
        System.out.println(k);

//        在静态方法中访问实例变量i 需要有对象的参与 完整的方式
        System.out.println(t1.i);
//        在静态方法中访问实例变量i 没有省略的方式
    }

//    实例方法
    public void method2(){
//        在实例方法中调用静态方法doSome 完整的方式
        ThisText.doSome();
//        在实例方法中调用静态方法doSome 省略的方式
        doSome();
        this.doSome();// 带有static关键字的静态方法应该采用"类名."的正规方式访问,但是通过"引用."的方式访问也是可以的,
                      // 只不过实际执行的时候和引用指向的对象无关,并且当引用为空的时候,也不会出现空指针异常。
                      // 当采用"引用."来访问静态方法的时候“IDEA软件”会出现警告,程序仍然可以执行。

//       在实例方法中 调用实例方法doOther 完整的方式  因为实例方法method被调用的时候已经有了对象,此位置的this就是指向这个对象,
        this.doOther();
//        在实例方法中调用实例方法doOther 省略的方式  (省略了this)
        doOther();

//        在实例方法中访问静态变量k 完整的方式
        System.out.println(ThisText.k);
        System.out.println(this.k);//这里访问静态变量是使用的"引用.",虽然可以,但是不建议这样使用
//        在实例方法中访问静态变量k 省略的方式
        System.out.println(k);//这里省略了"类名."

//        在实例方法中访问实例变量i 完整的方式
        System.out.println(this.i);
//        在实例方法中访问实例变量i 省略的方式
        System.out.println(i);
    }
//    主方法(也是静态方法)
    public static void main(String[] args) {
//        编写程序调用静态方法method1 完整方式调用
        ThisText.method1();
//        编写程序调用静态方法method1 省略方式调用
        method1();

//        创建ThisText对象
        ThisText tt = new ThisText();
//        编写程序调用method2 完整方式调用
        tt.method2();
//        编写程序调用method2 没有省略方式
    }
}

 

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

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

相关文章

APISpace接口推荐

APISpace 上面有各种类型的API,短信类、天气环境类、快递物流类、数据智能类等等,并且所有的API都提供的免费的调用次数,这么多的API肯定有你中意的!!!我们超多的热门API推荐给大家: IP归属地A…

CUDA与cuDNN安装教程(超详细)

前言 windows10 和win11安装 CUDA ,首先需要下载两个安装包 CUDA toolkit(toolkit就是指工具包) cuDNN 用于配置深度学习使用 官方教程 CUDA:Installation Guide Windows :: CUDA Toolkit Documentation (nvidia.com) cuDNN&…

ADMIN云计算系统管理

云计算系统管理一、inux简介Unix/Linux发展史操作系统 —— UNICS,后改为UNIXLinux版本及应用Red Hat系列版本二、Linux系统的安装三、Linux预备知识Linux目录结构四、Linux基本操作获取命令行右键“打开终端”命令行提示符pwd — Print Working Directorycd — Cha…

01-微服务探讨(摘)

1. 前言 1.1 微服务目的 有效地拆分应用,实现敏捷开发和部署,最终的目标是实现敏捷开发和部署,实现的方式是围绕业务能力*有效地拆分应用*。 微服务就是从各种角度,包括组织的、技术的等来阐释怎样有效地拆分应用,相对…

SSM-Spring

Spring Framwork 1. 核心概念 1.1 IoC控制反转 inversion of control控制反转 使用对象是主动由外部提供对象,此过程对象创建控制权由程序转移到外部。 Spring 提供IoC容器,用来充当IoC思想中的外部。负责创建和初始化等工作,被创建的对象再…

04-HTTPS证书格式及转换

PEM格式的证书文件(*.pem)由Base64编码的二进制内容和开头行(-----BEGIN CERTIFICATE-----)、结束行(-----END CERTIFICATE-----)组成,支持使用EditPlus等文本编辑器打开。本文介绍了将不同格式…

[附源码]java毕业设计教室用电控制系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

数据库的备份和还原(slqserver)

数据库的备份 1.语法&#xff1a; BACKUP DATABASE { database_name | database_name_var } TO <backup_device> [,...n] [ WITH{COPY_ONLY| NAME {backup_set_name | backup_set_name_var }| { NOINIT | INIT }| DESCRIPTION { test | text_variable }| PASSWORD { …

双端队列(双端bfs)解决边权只包含0和1的最短路问题

电路维修 达达是来自异世界的魔女&#xff0c;她在漫无目的地四处漂流的时候&#xff0c;遇到了善良的少女翰翰&#xff0c;从而被收留在地球上。 翰翰的家里有一辆飞行车。有一天飞行车的电路板突然出现了故障&#xff0c;导致无法启动。电路板的整体结构是一个 R行 C 列的网…

关于 re.sub 部分替换的解决办法

关于 re.sub 部分替换的解决办法写作背景问题重现解决办法代码详解结尾写作背景 最近本菜鸡遇到一个问题&#xff0c;我想将字符串中某一部分替换成指定内容&#xff0c;而且为了定位到要替换的内容&#xff0c;所以使用正则的时候还需要前后一些字符作为锚点&#xff0c;这可…

linux下基本命令

linux下基本命令一、linux相关快捷键二、linux下内部命令和外部命令2.1 内建命令2.2 外部命令2.3 内建命令和外部命令对比2.4 命令类型查看方法2.4 内建命令和外部命令帮助三、man手册四、相对路径和绝对路径五、pwd和cd命令六、mkdir创建目录七、rmdir删除目录八、linux文件类…

JMeter如何自定义HTTP组件

JMeter是一个优秀的开源项目&#xff0c;我们可以在jmeter的官网了解到如何使用和如何二次开发&#xff1a;Apache JMeter - Apache JMeter™ 因工作需要&#xff0c;最近做了一个JMeter自定义的http组件&#xff08;其实就是在http的基础上加了点东西而已&#xff09;。现就该…

TCO-PEG5-amine,NH2-PEG5-TCO,反式环辛烯-五聚乙二醇-氨基广泛应用于生物学研究

TCO-PEG5-NH2中英文名&#xff1a; CAS号&#xff1a;N/A | 英文名&#xff1a;TCO-PEG5-amine&#xff0c;TCO-PEG5-NH2 |中文名&#xff1a;反式环辛烯-五聚乙二醇-氨基TCO-PEG5-NH2物理参数&#xff1a; CASNumber&#xff1a;N/A Molecular formula&#xff1a;C21H40N2O7…

没有实施APS软件的工厂,常常面临的问题

对于制造工厂车间的运行而言&#xff0c;计划是核心的业务。制造工厂面对这么多订单并行生产执行、受制于有限的制造资源&#xff0c;如何安排次序、如何权衡轻重缓解&#xff0c;其实都是计划的范畴&#xff0c;计划执行过程总是受到各种形式的干扰或冲击&#xff0c;如何综合…

虹科分享 | 网络性能监控 | 网络中的应用性能意味着什么?

TCP协议的可靠性 数据包丢失是对网络的破坏&#xff0c;因为它导致延迟。TCP协议建立了可靠的数据传输&#xff0c;但掩盖了丢包的影响。TCP确保数据的传输是基于一个叫做 "滑动窗口 "的概念。这种机制控制着传输的字节序列和收到的确认。 在排序的帮助下&#xff…

项目管理之信息文档管理与配置管理(第一篇)

目录 前言 一、软件文档的分类 1.开发文档 2.产品文档 3.管理文档 二、文档质量的四个等级 1.1级文档 2.内部文档&#xff08;2级&#xff09; 3.工作文档&#xff08;3级文档&#xff09; 4.正式文档&#xff08;4级文档&#xff09; 三、配置管理 1.配置管理的定义…

XCTF-web1文件包含绕过file include

场景一&#xff1a; fileclude 题目描述 好多file呀&#xff01; 进入场景 给出PHP源码 包含flag.php文件 GET获取两个参数file1和file2 当参数不为空时&#xff0c;使用file_get_contents()函数将文件内容读入字符串&#xff0c;判断是否为"hello ctf" 利用ph…

vue项目前端优化处理方案整理

vue项目前端优化处理 目录 vue项目前端优化处理 路由懒加载 按需引入模块 外部资源引入&#xff0c;cdn加载 移除项目中所有的console.log()控制台信息数据打印 是否在构建生产包时生成sourcdeMap 上传图片文件压缩 开启gizp压缩 前端页面代码优化 路由懒加载 路由懒…

【深度学习】特征图的上采样(nn.Upsample)和转置卷积(nn.ConvTranspose2d) | pytorch

文章目录前言一、nn.Upsample 上采样二、nn.ConvTranspose2d 转置卷积前言 这次就不废话了&#xff0c;我想赶在10点前回去洗头&#xff08;现在9.17&#xff0c;还差一篇文章&#xff09; 一、nn.Upsample 上采样 该函数有四个参数&#xff1a; 参数的介绍如下&#xff1a…

工厂模式(Factory Pattern) 与抽象工厂模式(Abstract Factory Pattern)

工厂模式&#xff08;Factory Pattern) 与抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09; 工厂模式属于构造型模式&#xff0c;是项目中最常用到的一种设计模式。它的主要作用是提供一种简单的创建对象的方式&#xff0c;使用者无需知道创建实例的细节以及需要…