20220722-Java中this关键字

this关键字知识总结

学习资源:B站韩顺平老师Java入门教学

代码示例1

public class This01 {
    public static void main(String[] args) {
        Dog d1 = new Dog("小黄", 3);
        d1.info();
        System.out.println("对象d1的hashcode=:" + d1.hashCode());
        System.out.println("---------------");
        Dog d2 = new Dog("小花", 2);
        d2.info();
        System.out.println("对象d2的hashcode=:" + d2.hashCode());
    }
}
class Dog {
    int age;
    String name;
        //  根据变量的作用域原则,方法中的name与age实际指的是局部变量而不是成员变量
        //  public Dog(String name, int age) {
        //      name = name;
        //      age = age;
        //  }
        // java虚拟机会给每个对象分配this,代表当前对象
    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
        System.out.println("构造器中:this.hashcode=:" + this.hashCode());
    }
    public void info() {
        System.out.println("狗狗名字叫:" + this.name + "\n年龄:" + this.age);
        System.out.println("成员方法中:this.hashcode=:" + this.hashCode());
    }
}

代码示例2

public class ThisDetail {
    public static void main(String[] args) {
        T t1 = new T();
        t1.f2();
        System.out.println("---------------");
        T t2 = new T(10);
        System.out.println("---------------");
        T t3 = new T("小明", 10);
        System.out.println(t1.name + "==" + t1.age);
        System.out.println(t2.name + "==" + t2.age);
        System.out.println(t3.name + "==" + t3.age);
    }
}
class T {
    int age;
    String name;
    // 细节1:访问成员方法的语法:this.方法名(参数列表);
    public void f1() {
        System.out.println("f1()方法..");
    }
    public void f2() {
        System.out.println("f2()方法..");
        // 在f2()中调用f1()
        // 第一种方法
        f1();
        // 第二种方法
        this.f1();
    }
    // 细节2:调用构造器语法:this(参数列表); 只能在构造器中使用,只能放在构造器的首句
    T() {
        this.name = "小李";
        this.age = 18;
        System.out.println("调用构造器1");
    }
    T(int age) {
        this();
        this.age = age;
        System.out.println("调用构造器2");
    }
    T(String name, int age) {
        this(age);
        this.name = name;
        System.out.println("调用构造器3");
    }
}

注意事项与使用细节

  1. this关键字可以用来访问本类的属性、方法、构造器;
  2. this用于区分当前类的属性和局部变量;
  3. 访问成员方法的语法:this.方法名(参数列表);
  4. 访问构造器语法:this(参数列表); 注意:只能在构造器中使用,且需要为构造器中的首行;
  5. this不能在类定义的外部使用,只能在类定义的方法中使用

Original: https://www.cnblogs.com/zhanghuaze/p/16506098.html
Author: 淡忘的江南
Title: 20220722-Java中this关键字

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/615463/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java设计模式之(八)——适配器模式

    1、什么是适配器模式? Convert the interface of a class into another interface clients expect.Adapter…

    Java 2023年5月29日
    086
  • TensorFlow安装步骤

    最后命令行提示无错误即为安装成功 posted @2022-09-08 20:55 山海自有归期 阅读(38 ) 评论() 编辑 Original: https://www.cnb…

    Java 2023年6月7日
    081
  • 使用java调用 salesforce SOAP API

    可以从github上下载最新版本然后用maven工具构建 下面列下我用wsc工具打成jar包测试过程中的代码: java -cp force-wsc-27.0.0-jar-with…

    Java 2023年6月7日
    051
  • Raft一致性协议

    可视化演示: http://thesecretlivesofdata.com/raft/ Original: https://www.cnblogs.com/dong320/p/1…

    Java 2023年6月5日
    099
  • Vue图片浏览组件v-viewer使用

    简单介绍v-viewer的两种使用方法: Demo 安装依赖: npm install v-viewer –save 全局引入 import Viewer from ‘v-vie…

    Java 2023年6月9日
    090
  • 22部漫威电影大合集和观影顺序

    【原文链接】:https://blog.tecchen.tech ,博文同步发布到博客园。由于精力有限,对文章的更新可能不能及时同步,请点击上面的原文链接访问最新内容。欢迎访问我的…

    Java 2023年6月6日
    0105
  • [推荐]趣味剖析Spring5核心原理

    课程亮点; ●你想了解面试中碰到的spring的各种面试问题及背后的原理吗? ●你想知道如何在繁冗复杂的源码中揭开spring IoC的面纱吗? ●你想知道如何在拗口,晦涩的术语中…

    Java 2023年5月29日
    062
  • 可恶,又是个线上问题

    这几天,在搞 ShardingSphere,这不又来了一个问题嘛,启动的时候报了一个NPE出来。 好在,这个问题不影响使用,只是启动会报点错,接下来,又是辛苦的排查过程。 直接定位…

    Java 2023年6月13日
    076
  • 延时任务-基于redis zset的完整实现

    所谓的延时任务给大家举个例子:你买了一张火车票,必须在30分钟之内付款,否则该订单被自动取消。 订单30分钟不付款自动取消,这个任务就是一个延时任务。 我之前已经写过2篇关于延时任…

    Java 2023年6月15日
    088
  • maven私服和中央仓库的配置

    摘抄自CSDN:https://blog.csdn.net/wang379275614/article/details/53332918 Original: https://www…

    Java 2023年6月8日
    056
  • 通过OptaPlanner优化 COVID-19 疫苗接种预约安排(2)

    持续规划 连续规划是一种同时管理一个或多个未来的计划周期,并可以每月、每周、每天、每小时甚至更频繁地重复该过程的技术。规划的时间窗口按指定的时间间隔往后移动。下图显示了每天更新的两…

    Java 2023年6月16日
    0108
  • 第一次真正使用泛型

    背景 最近在做一个产品的版本设计功能,多个模块均涉及到版本管理,一开始着急上线,实现方式上是先完成一个模块的版本管理,把链路调通,然后上线。等到写其他模块的版本管理的时候,发现代码…

    Java 2023年6月13日
    082
  • java设计模式:观察者模式

    参考博客:Java观察者模式(Observer)SpringBoot事件监听机制及观察者模式/发布订阅模式 1.使用场景 聊天室程序的创建。服务器创建好后,A,B,C三个客户端连上…

    Java 2023年6月8日
    0105
  • java使用POI操作XWPFDocument 生成Word实战(一)

    注:我使用的word 2016功能简介:(1)使用jsoup解析html得到我用来生成word的文本(这个你们可以忽略)(2)生成word、设置页边距、设置页脚(页码),设置页码(…

    Java 2023年6月7日
    099
  • Linux自动备份MySQL、删除过期备份

    背景:阿里云服务器,只有一个数据库 需求:每天凌晨备份数据库、超过7天自动删除 方法: 一、新建执行脚本(/home/dbback/bkmscm.sh) 二、授予脚本权限 chmo…

    Java 2023年6月8日
    077
  • 谈统一接口协议设计

    作为一名Java后端开发人员,每个需求都涉及到接口开发。在多人开发项目中,每个人对于接口的设计都是不同的,我可以返回我认为这样非常友好的数据格式,你也可以返回你认为非常友好的数据格…

    Java 2023年6月13日
    076
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球