请选择 进入手机版 | 继续访问电脑版

好程序员-千锋教育旗下高端IT职业教育品牌

400-811-9990
我的账户
好程序员

专注高端IT职业培训

亲爱的猿猿,欢迎!

已有账号,请

如尚未注册?

[JavaEE] 好程序员Java教程分享Java中this的几种用法

[复制链接]
叶子老师 发表于 2019-10-17 16:19:18 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
  好程序员Java教程分享Javathis种用法this关键字必须放在非静态方法里面
  this关键字代表自身,在程序中主要的使用用途有以下几个方面:
  ?使用this关键字引用成员变量
  ?使用this关键字在自身构造方法内部引用其它构造方法
  ?使用this关键字代表自身类的对象
  ?使用this关键字引用成员方法
  引用成员变量
  在一个类的方法或构造方法内部,可以使用this.成员变量名”这样的格式来引用成员变量名,有些时候可以省略,有些时候不能省略。首先看一下下面的代码:
  /**
  *使用this引用成员变量
  */
  publicclassReferenceVariable{
  privateinta;
  publicReferenceVariable(inta){
  this.a=a;
  }
  publicintgetA(){
  returna;
  }
  publicvoidsetA(inta){
  this.a=a;
  }
  }
  在该代码的构造方法和setA方法内部,都是用this.a引用类的成员变量。因为无论在构造方法还是setA方法内部,都包含2个变量名为a的变量,一个是参数a,另外一个是成员变量a。按照Java语言的变量作用范围规定,参数a的作用范围为构造方法或方法内部,成员变量a的作用范围是类的内部,这样在构造方法和setA方法内部就存在了变量a的冲突,Java语言规定当变量作用范围重叠时,作用域小的变量覆盖作用域大的变量。所以在构造方法和setA方法内部,参数a起作用。
  这样需要访问成员变量a则必须使用this进行引用。当然,如果变量名不发生重叠,则this可以省略。
  但是为了增强代码的可读性,一般将参数的名称和成员变量的名称保持一致,所以this的使用频率在规范的代码内部应该很多。
  引用构造方法
  在一个类的构造方法内部,也可以使用this关键字引用其它的构造方法,这样可以降低代码的重复,也可以使所有的构造方法保持统一,这样方便以后的代码修改和维护,也方便代码的阅读。
  下面是一个简单的示例:
  /**
  *使用this关键字引用构造方法
  */
  publicclassReferenceConstructor{
  inta;
  publicReferenceConstructor(){
  this(0);
  }
  publicReferenceConstructor(inta){
  this.a=a;
  }
  }
  这里在不带参数的构造方法内部,使用this调用了另外一个构造方法,其中0是根据需要传递的参数的值,当一个类内部的构造方法比较多时,可以只书写一个构造方法的内部功能代码,然后其它的构造方法都通过调用该构造方法实现,这样既保证了所有的构造是统一的,也降低了代码的重复。
  在实际使用时,需要注意的是,在构造方法内部使用this关键字调用其它的构造方法时,调用的代码只能出现在构造方法内部的第一行可执行代码。这样,在构造方法内部使用this关键字调用构造方法最多会出现一次。
  代表自身对象
  在一个类的内部,也可以使用this代表自身类的对象,或者换句话说,每个类内部都有一个隐含的成员变量,该成员变量的类型是该类的类型,该成员变量的名称是this,实际使用this代表自身类的对象的示例代码如下:
  /**
  *使用this代表自身类的对象
  */
  publicclassReferenceObject{
  ReferenceObjectinstance;
  publicReferenceObject(){
  instance=this;
  }
  publicvoidtest(){
  System.out.println(this);
  }
  }
  在构造方法内部,将对象this的值赋值给instance,在test方法内部,输出对象this的内容,这里的this都代表自身类型的对象。
  引用成员方法
在一个类的内部,成员方法之间的互相调用时也可以使用this.方法名(参数)”来进行引用,只是所有这样的引用中this都可以省略,这里就不详细介绍了。

好程序员Java教程http://www.goodprogrammer.org/javaEE_class.shtml

精彩内容,一键分享给更多人!
回复

使用道具 举报

您需要登录后才可以回帖

本版积分规则

关注我们
好程序员
千锋好程序员

北京校区(总部):北京市海淀区宝盛北里西区28号中关村智诚科创大厦

深圳西部硅谷校区:深圳市宝安区宝安大道5010号深圳西部硅谷B座A区605-619

杭州龙驰智慧谷校区:浙江省杭州市下沙经济技术开发区元成路199号龙驰智慧谷B座7层

郑州校区:郑州市二七区航海中路60号海为科技园C区10层、12层

Copyright 2007-2019 北京千锋互联科技有限公司 .All Right

京ICP备12003911号-5 京公安网11010802011455号

请您保持通讯畅通1对1咨询马上开启