深入Java关键字this的用法的总结


在Java程序设计中经常会见到this的使用,this使得程序设计变得规范、简单、灵活。但是在使用过程中,在不同场合它的含义并不完全相同,使用不当还会出现错误,本文对this的几种用法和出现的问题进行了分析详解。

关键词:类;对象;this;成员变量;方法;构造方法中,Java语言提供了丰富的类(Class)、接口(Interface)以及相应的方法(Method)。

使用这些类或接口,用户可以定义自己的类或子类,并以这些类为模板创建对象(Object)。

在Java语言中,当创建一个对象后,Java虚拟机就会为其分配一个指向对象本身的指针,这个指针就是“this”。关键字this与对象密切相
关,在Java程序设计中经常会见到this的使用,我们很多人很难理解它,因为它的语法较为灵活,那this到底有哪些用处呢?什么情况下使用它呢?本文就具体来分析一下this的使用方法。

一、使用this调用本类中的成员变量(属性)

例1:观察以下的程序代码,看看会出现哪些问题呢?

class Student

{ private String name; //定义一个成员变量name

public void setName(String name) {//设置姓名,定义一个形参name

name=name; //将局部变量的值传递给成员变量 }

public String getName( ) {//获得姓名 return "姓名:"+name; }}

public class ThisExample01

{ public static void main(String args[]) { Student stu=new Student(); stu.setName("李明");

System.out.println(stu.getName()); }}

运行结果:姓名:null

由运行结果可以看出,通过name=name并没有正确的将内容赋给属性,为什么呢?因为此时操作的name实际上是方法中的,跟类中的属性完全不沾边。

另外,这个程序代码中,有一个成员变量name,同时在方法中有个形式参数,参数名也是name。然后在方法中将形式参数name的值传递给成员变量name。虽然我们可以看明白这个代码的含义,但是作为Java编译器它是怎么判断使用哪个变量的呢?到底是将形式参数name的值传递给成员变量name,还是反过来讲成员变量name的值传递给形式参数name呢?

此时this这个关键字就起到作用了,这种情况下使用this这个关键字代表的就是类中的成员变量,又叫做类的属性。所以此时,为了明确的表示出哪一个是类中的属性,就要加上“this.属性名称”的操作,将student类的代码改进如下:

class Student

{ private String name;

public void setName(String name) {

相关内容

    暂无相关文章