黑马程序员_this 关键字

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

this 关键字

this 关键字代表自身,在程序中主要的使用用途有以下几个方面:

使用 this 关键字引用成员变量

使用 this 关键字在自身构造方法内部引用其它构造方法

使用 this 关键字代表自身类的对象

使用 this 关键字引用成员方法

(1)引用成员变量

在一个类的方法或构造方法内部,可以使用“this.成员变量名”这样的格式来引用

成员变量名,有些时候可以省略,有些时候不能省略。首先看一下下面的代码:

/**

* 使用 this 引用成员变量

*/

public class ReferenceVariable {

private int a;

public ReferenceVariable(int a){

this.a = a;

}

public int getA(){

return a;

}

public void setA(int a){

this.a = a;

}

}

在该代码的构造方法和 setA 方法内部,都是用 this.a 引用类的成员变量。因为无论在构造方法还是 setA 方法内部,都包含 2 个变量名为 a 的变量,一个是参数 a,另外一个是成员变量 a。按照 Java 语言的变量作用范围规定,参数 a 的作用范围为构造方法或方法内部,成员变量 a 的作用范围是类的内部,这样在构造方法和 setA 方法内部就存在了变量 a 的冲突,Java 语言规定当变量作用范围重叠时,作用域小的变量覆盖作用域大的变量。所以在构造方法和 setA 方法内部,参数 a 起作用。这样需要访问成员变量 a 则必须使用 this 进行引用。当然,如果变量名不发生重叠,则 this 可以省略。但是为了增强代码的可读性,一般将参数的名称和成员变量的名称保持一致,所以this 的使用频率在规范的代码内部应该很多。

(2)引用构造方法

在一个类的构造方法内部,也可以使用 this 关键字引用其它的构造方法,这样可以降低代码的重复,也可以使所有的构造方法保持统一,这样方便以后的代码修改和维护,也

方便代码的阅读。

下面是一个简单的示例:

/**

* 使用 this 关键字引用构造方法

*/

public class ReferenceConstructor {

int a;

public ReferenceConstructor(){

this(0);

}

public ReferenceConstructor(int a){

this.a = a;

}

}

这里在不带参数的构造方法内部,使用 this 调用了另外一个构造方法,其中 0 是根

据需要传递的参数的值,当一个类内部的构造方法比较多时,可以只书写一个构造方法的内

部功能代码,然后其它的构造方法都通过调用该构造方法实现,这样既保证了所有的构造是

统一的,也降低了代码的重复。

在实际使用时,需要注意的是,在构造方法内部使用 this 关键字调用其它的构造方法时,调用的代码只能出现在构造方法内部的第一行可执行代码。这样,在构造方法内部使

this 关键字调用构造方法最多会出现一次。

(3)代表自身对象

在一个类的内部,也可以使用 this 代表自身类的对象,或者换句话说,每个类内部都有一个隐含的成员变量,该成员变量的类型是该类的类型,该成员变量的名称是 this,实

际使用 this 代表自身类的对象的示例代码如下:

/**

* 使用 this 代表自身类的对象

*/

public class ReferenceObject

{

public ReferenceObject instance;

public ReferenceObject()

{

instance = this;

}

public void test()

{

System.out.println(this);

}

public static void main(String []argc)

{

ReferenceObject ro=new ReferenceObject();

ReferenceObject ro1=new ReferenceObject();

ro1.test();

System.out.println("ro1"+ro1);

System.out.println("ro"+ro);

}

}//引用roro1 是为了测试this具体是什么,是哪个的。

在构造方法内部,将对象 this 的值赋值给 instance,在 test 方法内部,输出对象 this 的内容,这里的 this 都代表自身类型的对象ro1的地址。

(4)引用成员方法

在一个类的内部,成员方法之间的互相调用时也可以使用“this.方法名(参数)”来

进行引用,只是所有这样的引用中 this 都可以省略。

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值