【发布时间】:2012-04-15 22:53:21
【问题描述】:
我不太了解 Java 中“this”的用法。如果有人能帮我澄清一下,我将不胜感激。
在这个网站上写着:http://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html
“在实例方法或构造函数中,这是对当前对象的引用——正在调用其方法或构造函数的对象。您可以通过以下方式在实例方法或构造函数中引用当前对象的任何成员用这个。”
它给出了以下示例:
比如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 = a 可以写成 this.x = x?为什么不是this.x = a?为什么x在左边?
很抱歉,我对 Java 很陌生。我很抱歉让专家们感到厌烦。
【问题讨论】:
-
在第二个例子中,构造函数的参数被命名为
x和y而不是a和b,所以说this.x = a没有意义,因为没有a存在。在您的第一个示例中,this.x = a和this.y = b完全可以接受。this用作区分同名变量的常用方法,如在第二个示例中,如果您只是说x = x,编译器将无法分辨哪个x是哪个。