作为参数的“this”关键字到底是做什么的?

时间:2014-04-06 20:01:11

标签: java android this keyword

所以我经常搜索了很多东西 - 很多"很多"我的意思是,无论是在本网站还是其他网站,都要了解关键字this在java中的作用。

我现在正在按照教程开发适用于Android的游戏。在这些教程中,上传者将这个"这个"作为一个参数,但他没有解释为什么他这样做。

到目前为止我所知道的:

  • 它可以用作参数(这是我最困惑的部分)
  • 可以像Fish.this这样引用外部类(对此不太确定)
  • 它可以用来指代外部变量(我知道最差的定义),如下所示:
  

公共课人类{

    int name; //aka name1
    public Humans(int name){ //aka name2
        this.name = name; //the name1 = name2
    }

我想对该关键字进行深入解释,因为我发现它真的令人困惑,同时,它阻止我继续使用这些教程(请不要如果你的回答很简短,我就很难回答,我喜欢在脑海里清楚地记得因为我很容易混淆,特别是在编程方面。我被困住了,你的帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

在实例方法或构造函数中,这是对当前对象的引用 - 正在调用其方法或构造函数的对象。您可以使用此方法在实例方法或构造函数中引用当前对象的任何成员。

使用this关键字的最常见原因是因为某个字段被方法或构造函数参数遮蔽。

例如,Point类就是这样编写的

public class Point {
    public int x = 0;
    public int y = 0;

    //constructor
    public Point(int a, int b) {
        x = a;
        y = b;
    }
}

但它可能是这样写的:

public class Point {
    public int x = 0;
    public int y = 0;

    //constructor
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

构造函数的每个参数都会影响对象的一个​​字段 - 构造函数x内部是构造函数的第一个参数的本地副本。要引用Point字段x,构造函数必须使用this.x。

你可以在这里找到很好的例子(他们也将展示"这个"关键字)的不同用途---> http://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html