Java中this关键字的常见用法

2023-09-22 15:35:18

 一、this 使用方法

        总结下来就是,在Java中,this是一个关键字,用于引用当前对象的引用,可以用于引用对象的实例变量和方法。主要用于以下几个方面:

      1、在构造函数中使用this关键字来调用同一个类中的其他构造函数。这种情况下,this关键字必须作为构造函数的第一行代码出现,并且用于区分不同参数列表的构造函数。

public class MyClass {
    private int value;

    public MyClass() {
        this(0); // 调用带参构造函数
    }

    public MyClass(int value) {
        this.value = value;
    }
}

       在构造函数中,可以使用"this"关键字引用对象的"value"实例变量,以便对它进行初始化。 

         2、用于在实例方法中引用当前对象的成员变量或方法。

public class MyClass {
    private int value;

    public void setValue(int value) {
        this.value = value;
    }

    public int getValue() {
        return this.value;
    }
}

  this.value 表示当前对象的成员变量 value,而 value 是方法的参数。通过使用 this 关键字,可以明确指定要访问或修改的是当前对象的成员变量而不是局部变量。

        这样做的好处是,在方法内部可以区分成员变量和方法参数名字相同的情况,避免混淆。例如,如果参数名字与成员变量名字相同,可以使用this关键字来引用成员变量,以明确指示要操作的是成员变量而不是方法参数。

        因此,this.value = value; 语句的作用是将方法参数value的值赋给当前对象的成员变量value,以实现对成员变量的赋值操作。

        3、在内部类中,使用this关键字引用外部类对象。

public class OuterClass {
    private int value;

    public void outerMethod() {
        InnerClass inner = new InnerClass();
        inner.innerMethod();
    }

    public class InnerClass {
        public void innerMethod() {
            OuterClass.this.value = 10; // 使用this关键字引用外部类对象的成员变量
        }
    }
}

        在这段代码中,OuterClass.this.value = 10; 是在内部类 InnerClass 的方法 innerMethod 中使用的。

   InnerClass 是一个嵌套在 OuterClass 内部的类。当我们在内部类中访问外部类的成员时,需要使用 OuterClass.this 来引用外部类对象。

  OuterClass.this 表示对外部类 OuterClass 对象的引用。通过它,我们可以访问外部类的成员变量和方法。在这里,OuterClass.this.value = 10; 表示将外部类 OuterClass 的成员变量 value 的值设置为 10。

        由于 value 是外部类的私有成员变量,只能在外部类内部或通过公共方法进行访问和修改。通过内部类的实例,我们可以通过 OuterClass.this 访问外部类的成员变量并进行操作,实现了内部类对外部类的访问与操作。

二、this关键字的优缺点

优点

①、避免命名冲突,简化代码:如果方法参数和实例变量名称相同,使用 "this" 关键字可以区分它们,避免命名冲突。同时使用 "this" 关键字可以简化代码,特别是当需要访问当前对象的属性或方法时。

②、明确指明当前对象:在一个对象中调用另一个方法时,使用 "this" 关键字可以明确指明当前对象,提高代码的可读性。

缺点

①、使用 "this" 关键字可能会使代码变得难以阅读,尤其是在方法中多次使用 "this" 关键字时。过度使用 "this" 关键字也可能使代码变得冗长。

②、在方法中使用 "this" 关键字可能会导致一些问题,例如,在构造函数中使用 "this" 关键字可能会导致对象尚未完全初始化就被调用。

③、在某些情况下,使用 "this" 关键字可能会导致不必要的性能损失,因为它需要额外的内存和处理时间来引用当前对象。

更多推荐

【xilinx】Versal启动文件简述 pdi bif

Versal启动文件简述FPGA开发圈2022-12-2216:09400浏览0评论0点赞作者:MacMahonStephen,AMD赛灵思开发者Versal™是由多个高度耦合的可配置块组成的自适应计算加速平台(ACAP)。这些块包括NoC、AIE、PL和CIPS(CIPS本身包含不同的域:LPD和FPD)等,启动这些

串口通信遇到的一个问题。

crash信息:W/System.err:java.io.IOException:writefailed:EAGAIN(Tryagain)W/System.err:atlibcore.io.IoBridge.write(IoBridge.java:531)W/System.err:atjava.io.FileOutpu

DSU ON TREE

DSUONTREEDSU:并查集DSUONTREE:树上启发式合并我也不知道为啥树上并查集就是树上启发式合并启发式合并的思想是每次把小的往大的合并,也就是最大化利用已有的答案(大的数组不用清空,在原基础上加上小的即可)。转移到树上,“大”显然就是树的重心。能解决什么样的问题?需要统计子树信息,但是子树的信息不好合并。比

为什么要用vite,用vite的原因是什么

为什么选Vite|Vite官方中文文档(vitejs.dev)在很久以前,javascript是没有模块化的,就是一个整体,所以为了将文件分成很小的模块文件,才出现“打包”这个概念之前的拆分工具像webpack,rollup等,因为项目越来越大,需要很长时间才能启动开发服务器,热替换的作用也不太明显,需要很长时间才会显

frp内网穿透服务器搭建(自建frp内网穿透)

一、简介frp是一款跨平台的内网穿透工具,支持Windows系统,支持linux内核的系统,支持软路由系统,支持群晖nas系统。可以实现多种服务的穿透,以我个人为例,我就通过frp实现了路由器的远程管理,nas的远程访问,pve虚拟机的远程管理,办公电脑的远程桌面。通过一段时间的使用感觉frp就是神器!无线路由器-网关

RDMA性能测试工具集preftest_README

文章目录1概述2安装3测试方法说明4测试说明5运行测试所有测试的通用选项延迟测试选项带宽测试选项ib_send_lat(发送延迟测试)和ib_send_bw(发送带宽测试)的选项ib_atomic_lat(原子延迟测试)和ib_atomic_bw(原子带宽测试)的选项原始以太网发送带宽测试的选项测试工具:https:/

宁波融资融券开户利息率最低是多少?两融利率5%或以下!

宁波融资融券开户利息率最低是多少?两融利率5%或以下!融资融券是指投资者通过借入资金融资,或者借入证券卖出并借入资金购买证券,以达到增加投资收益的一种交易方式。融资融券交易需要满足一定的条件,如投资者必须拥有一定的股票、证券或现金等交易资产,且在证券公司开通融资融券账户。融资融券交易具有一定的风险,需要投资者了解相关规

Vue模板语法

文章目录一、模板语法二、插值2.1文本2.2原始HTML2.3表达式2.4样式绑定三、指令3.1v-if/v-else/v-else-if3.2v-show3.3v-for3.4v-model四、过滤器五、监听、计算属性5.1监听属性5.2计算属性一、模板语法Vue使用一种基于HTML的模板语法,使我们能够声明式地将其

主动写入流对@ResponseBody注解的影响 | 京东云技术团队

问题回溯2023年Q2某日运营反馈一个问题,商品系统商家中心某批量工具模板无法下载,导致功能无法使用(因为模板是动态变化的)商家中心报错(JSON串):{"code":-1,"msg":"失败"}负责的同事看到失败后立即与我展开讨论(因为不是关键业务,所以不需要回滚,修复即可),我们发现新功能模板下载的代码与之前的代码

PIL或Pillow学习2

接着学习下Pillow常用方法:PIL_test1.py:'''9,Pillow图像降噪处理由于成像设备、传输媒介等因素的影响,图像总会或多或少的存在一些不必要的干扰信息,我们将这些干扰信息统称为“噪声”,比如数字图像中常见的“椒盐噪声”,指的是图像会随机出现的一些白、黑色的像素点。图像噪声既影响了图像的质量,又妨碍人

按文件大小批量分类保存,高效管理你的文件!

作为一名文件管理者,你是否经常为如何高效地管理大量文件而烦恼?现在,我们为你提供了一种简单、快速、准确的方法,帮助你轻松解决这个问题!首先。进入文件批量改名高手主页面,并在板块栏里选择“文件智能管理箱”板块。第二步,进入板块之后,我们要点击上方的“文件批量管理任务”。再点击“添加文件”在弹出的文件框里将文件夹里不同类型

热文推荐