iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Javathis关键字的引用详解
  • 448
分享到

Javathis关键字的引用详解

2024-04-02 19:04:59 448人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录为什么要有this引用?什么是this引用this引用的特性为什么要有this引用? 我们先看一段代码示例 public class Date { public in

为什么要有this引用?

我们先看一段代码示例


public class Date {
    public int year;
    public int month;
    public int day;
    
    public void setDay(int y,int m,int d){
        year = y;
        month = m;
        day = d;
    }
    
    public void printDate(){
        System.out.println(year + "/" + month + "/" + day);
    }
    public static void main(String[] args){
        //构造三个日期类型的对象
        Date d1 = new Date();
        Date d2 = new Date();
        Date d3 = new Date();
       
        //对d1,d2,d3的日期进行设置
        d1.setDay(2022,3,25);
        d2.setDay(2022,3,26);
        d3.setDay(2022,3,27);
        
        //打印日期中的内容
        d1.printlnDate();
        d2.printlnDate();
        d3.printlnDate();
        
    }
}

以上代码定义了一个日期类,然后main方法中创建出了三个对象,并且通过Date类中的成员方法对对象进行设置和打印,代码逻辑没有任何问题
但是有两个小细节
⚠️形参名不小心和成员变量名相同


public void setDay(int year,int month,int day){
    year = year;
    month = month;
    day = day;
}

这个方法中,形参名和对象的成员变量名重复了,编译器也懵了,不知道谁给谁赋值
⚠️三个对象都在调用setDate和printDate方法,但是两个方法中没有任何有关对象的说明,setDate和printDate方法是如何寻找到引用自己的对象,并且去调用这个对象的数据的呢?(这段字有点绕,大家好好品一品)
那么,this就是幕后操纵者

什么是this引用

Java编译器给每个“成员方法”增加了一个隐藏的引用类型参数,该引用参数指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该引用去访问的。只不过所有的操作对用户来说都是透明的,用户不需要在调用方法的时候去刻意得传入对象的地址值或是引用变量,编译器帮你自动完成。



public class Date {
    public int year;
    public int month;
    public int day;
    
    public void setDay(int year,int month,int day){
        this.year = year;
        this.month = month;
        this.day = day;
    }
    public void printDate(){
        System.out.println(this.year+"/"+this.month+"/"+this.day);
    }
    
}

⚠️:this引用的是调用成员方法的对象
这里我们填上main方法之后再来观察一下


public static void main(String[] args) {
        Date d = new Date();
        d.setDay(2020,9,15);
        d.printDate();
    }

image.png

我们进入调试后,首先程序执行创造对象的代码,我们可以看到这里的this存了一个地址值

image.png

然后我们继续

image.png

当程序进行到d.setDay这一行的时候,我们就可以发现了,d这个引用变量指向的对象地址值也是Date@701
说明什么,说明this和d引用的都是同一个对象

image.png

this引用的特性

  • this的类型:对应类类型引用,即那个对象调用就是哪个对象的引用类型
  • this只能再“成员方法”中使用
  • 在“成员方法”中,this只能引用当前对象,不能再引用其他对象了,具有final属性(后面解释)
  • this是“成员方法”第一个隐藏的参数,编译器会自动传递,再成员方法执行的时候,编译器会负责调用成员方法对象的引用传递给该成员方法,this负责来接受,就像上图一样,

image.png

感谢阅读,希望能帮到你

到此这篇关于Java this关键字的引用详解的文章就介绍到这了,更多相关Java this内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Javathis关键字的引用详解

本文链接: https://www.lsjlt.com/news/144548.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Javathis关键字的引用详解
    目录为什么要有this引用?什么是this引用this引用的特性为什么要有this引用? 我们先看一段代码示例 public class Date { public in...
    99+
    2024-04-02
  • C++ 右值引用与 const 关键字详解
    C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,const关键字是一种修饰符。修饰符本身,并不产生任何实际代码。就 const 修饰符而言,它用来告...
    99+
    2024-04-02
  • 详解C++ 左值引用与 const 关键字
    左值引用是已定义的变量的别名,其主要用途是用作函数的形参,将 const 关键字用于左值引用时,其在初始化时可接受的赋值形式变得更加广泛了,这里来总结一下。 左值引用是已定义的变量的...
    99+
    2024-04-02
  • 一文详解C++中的引用与关键字auto
    目录一.引用1.引用的概念2.引用的使用和问题3.引用与指针的比较二.关键字auto一.引用 1.引用的概念 引用就是给一个已经存在的变量取一个别名,与变量共用一段内存空间。注意引用...
    99+
    2023-05-16
    C++ 引用 关键字auto C++引用 C++ 关键字auto
  • Javasuper关键字的用法详解
    目录super关键字的三种用法:1. super.成员变量2. super.成员方法3. super():调用父类中的构造方法3.1.1 隐式调用父类无参数构造方法super()3....
    99+
    2024-04-02
  • SQL关键字详解
    当前市场中,数据库在互联网整个技术链中的重要性是亘古不变的,站在实现业务功能的角度来说我们最常用的就是与数据库和缓存进行交互,而最终持久化存储最常见的依旧是关系型数据库。数据库中我们做常用的就是SQL基本查询语言,甚至有些人认为数据库就是S...
    99+
    2023-10-07
    数据库 mysql
  • Java super关键字的使用详解
    目录1.super介绍2.super的基本使用3.子类和父类方法的调用细节4.super和this的区别1.super介绍 我们可以通过super关键字来实现对父类成员的访问,用来引...
    99+
    2024-04-02
  • C++ explicit关键字的使用详解
    在C++中,我们有时可以将构造函数用作自动类型转换函数。但这种自动特性并非总是合乎要求的,有时会导致意外的类型转换,因此,C++新增了关键字explicit,用于关闭这种自动特性。即...
    99+
    2024-04-02
  • 详解Java的static关键字
    文章目录 🎄静态方法🌺静态方法和非静态方法对比🛸静态方法实例🛸非静态方法实例 🌹static关键字⭐static变量⭐static代码块 ...
    99+
    2023-12-22
    java 开发语言 static 静态方法
  • Java this关键字的使用详解
    目录1. 先看一段代码,并分析问题2. 深入理解 this3. this 的注意事项和使用细节4. this 的案例1. 先看一段代码,并分析问题 public class ...
    99+
    2024-04-02
  • Golang关键字defer的用法详解
    目录1. defer的简单介绍与使用场景2. defer在return执行的时机3. 小结1. defer的简单介绍与使用场景 defer是Go里面的一个关键字,用在方法或函数前面,...
    99+
    2023-05-18
    Golang关键字defer使用 Golang defer使用 Golang defer
  • c++关键字const的用法详解
    目录C语言const的用法1、指向常量的指针变量const int *p指针指向int a;2、常指针(常地址)int * const p指针指向int a;3、指向常量的常指针co...
    99+
    2024-04-02
  • 详解JS中continue关键字和break关键字的区别
    目录1.框架2.简单介绍3.代码演示4.演示break1.框架 <!DOCTYPE html> <html> <head> ...
    99+
    2022-11-13
    JS continue break区别 JS continue break
  • Java 关键字:synchronized详解
    synchronized详解 基本使用源码解析常见面试题好书推荐 基本使用 Java中的synchronized关键字用于在多线程环境下确保数据同步。它可以用来修饰方法和代码块 当一...
    99+
    2023-10-20
    java 开发语言 并发编程 JUC synchronized 原力计划
  • 详解C++中inline关键字的作用
    目录inline关键字:目的:原理:注意事项:总结 inline关键字: 目的: 在 c/c++ 中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题。 原理: 调用函数的...
    99+
    2024-04-02
  • JavaScript中的this关键字用法详解
    目录this的绑定call与apply当方法失去主语的时候,this不再有?不可见的调用总结先举一个生活例子: 小明正在跑步,他看起来很开心 这里的小明是主语,如果没有这个主语,那么...
    99+
    2023-05-19
    JavaScript this关键字 JavaScript 关键字 JavaScript this
  • 详解Java关键字final
    目录一、常见问题二、final修饰类三、final修饰方法四、final方法是可以被重载的五、修饰变量六、static final七、black final八、final域重排序规则...
    99+
    2024-04-02
  • JavaScript的this关键字怎么引用
    这篇“JavaScript的this关键字怎么引用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看...
    99+
    2024-04-02
  • 详解Java中的final关键字
    目录概述使用方式修饰类修饰方法修饰变量概述 子类可以在父类的基础上改写父类内容,比如,方法重写。那么我们能不能随意的继承API中提供的类,改写其内容呢?显然这是不合适的。为了避免这种...
    99+
    2022-11-13
    Java final关键字 Java final
  • Java中的public关键字详解
    第1部分:什么是public关键字? 在Java中,public是一个访问修饰符(Access Modifier),用于控制类、方法、字段等元素的可见性。使用public关键字修饰的元素可以在任何地方被访问,即具有最大的访问权限。 第2部分...
    99+
    2023-09-29
    java 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作