我为我的琐碎而且可能是愚蠢的问题道歉,但是在使用方法或访问某些内容时何时使用"this"前缀我感到有点困惑.
例如,如果我们在这里查看#4:http: //apcentral.collegeboard.com/apc/public/repository/ap_frq_computerscience_12.pdf
我们在这里查看解决方案:http: //apcentral.collegeboard.com/apc/public/repository/ap12_computer_science_a_q4.pdf
我们看到a)部分的一个解决方案是
public int countWhitePixels() {
int whitePixelCount = 0;
for (int[] row : this.pixelValues) {
for (int pv : row) {
if (pv == this.WHITE) {
whitePixelCount++;
}
}
}
return whitePixelCount;
}
Run Code Online (Sandbox Code Playgroud)
而另一种解决方案是
public int countWhitePixels() {
int whitePixelCount = 0;
for (int row = 0; row < pixelValues.length; row++) {
for (int col = 0; col < pixelValues[0].length; col++) {
if (pixelValues[row][col] == WHITE) {
whitePixelCount++;
}
}
}
return whitePixelCount;
}
Run Code Online (Sandbox Code Playgroud)
这是我的问题.为什么他们使用"这个".在第一个解决方案中访问pixelValues甚至WHITE时的前缀,但不是在第二个解决方案中?我认为"这个"是隐含的,所以我说"这个"是正确的.对于第一个解决方案,根本没有必要吗?
非常感谢你的帮助 :)
有了this,您可以明确地引用您所在的对象实例.您只能在实例方法或初始化程序块中执行此操作,但不能在static方法或类初始化程序块中执行此操作.
什么时候需要?
仅在同名变量(局部变量或方法参数)隐藏声明的情况下.例如:
private int bar;
public void setBar(int bar) {
this.bar = bar;
}
Run Code Online (Sandbox Code Playgroud)
这里方法参数隐藏了实例属性.
当编码员习惯使用它?
为了提高可读性,通常的做法是程序员this.在访问实例属性之前添加限定符.例如:
public int getBar() {
return this.bar;
// return bar; // <-- this is correct, too
}
Run Code Online (Sandbox Code Playgroud)
当方法参数的名称与类数据成员之一相同时;然后,要引用数据成员,您必须放在this.它前面。例如,在函数中setA():
public void setA(int a)
{
this.a = a;
}
Run Code Online (Sandbox Code Playgroud)
由于方法的数据成员和参数都被命名为a,要引用数据成员,您必须使用this.a。在其他情况下,则不需要。
而且,就您而言,我认为没有必要使用this,尽管使用它没有什么坏处。