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是指向对象本身的一个指针”这句话的更深入的理解而来的,死记不然容易忘记而且容易搞错,要理解!
     
  • 相关阅读:
    一个基础的CURL类
    设计自适应网页方法
    JQ点击列表显示隐藏
    获取当前页面的完整URL
    配置时间生成下拉菜单
    Contains Duplicate II
    Rectangle Area
    面试题47:不用加减乘除做加法
    面试题48:用C++设计一个不能被继承的类
    Reverse Linked List
  • 原文地址:https://www.cnblogs.com/ZhuRenWang/p/4726128.html
Copyright © 2011-2022 走看看