zoukankan      html  css  js  c++  java
  • [转]Java中this的意义

    1.

    this 指的不是成员变量还是方法里的参数值
    指得是这个类自身

    class a
    {
    int i = 0;
    public void aa(){
    System.out.print(i);
    }
    public void ab(){
    aa();
    }
    }
    上边这个类是肯定可以正常编译运行的 但是那是经过编译器修改过以后才可以的 这个类真正的样子是这样的
    class a
    {
    int i = 0;
    public void aa(){
    System.out.print(this.i);
    }
    public void ab(){
    this.aa();
    }
    }
    看见没有 类在调用自己成员变量和方法的时候其实都是必须要在前边加上this.的
     
     
     
    2.有this表示的是成员变量,没有this修饰的就近原则,那个离他进就是哪个。比如成员变量跟参数都是同一个名(例 int age)。在方法里面,有this修饰的就是表示成员,没有的就是参数。都没有修饰,就表示是离他近的参数啦。。
    当然这个回答只是回答了你的问题、
    扩展一下内容吧=====
    (当虚拟机创建一个对象,会创建一个指针指向自己)this就表示引用自己的指针,所以在静态或静态的代码快中不能有this,因为没有创建对象。
    总结一下,其实this主要要三种用法:
    1、表示对当前对象的引用!
    2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下。
    3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始!
    还有就是注意:this不能用在static方法中!所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用!
    说明在什么情况下需要用到this:
    第一、通过this调用另一个构造方法,用发是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。
    第二、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错,呵呵。
    第三、在函数中,需要引用该函所属类的当前对象时候,直接用this。
    其实这些用法总结都是从对“this是指向对象本身的一个指针”这句话的更深入的理解而来的,死记不然容易忘记而且容易搞错,要理解!
     
  • 相关阅读:
    ASP.NET CORE 使用Consul实现服务治理与健康检查(2)——源码篇
    ASP.NET CORE 使用Consul实现服务治理与健康检查(1)——概念篇
    Asp.Net Core 单元测试正确姿势
    如何通过 Docker 部署 Logstash 同步 Mysql 数据库数据到 ElasticSearch
    Asp.Net Core2.2 源码阅读系列——控制台日志源码解析
    使用VS Code 开发.NET CORE 程序指南
    .NetCore下ES查询驱动 PlainElastic .Net 升级官方驱动 Elasticsearch .Net
    重新认识 async/await 语法糖
    EF添加
    EF修改部分字段
  • 原文地址:https://www.cnblogs.com/ZhuRenWang/p/4726128.html
Copyright © 2011-2022 走看看