我知道这是指一个当前对象。但是我不知道什么时候我真的需要使用它。例如,如果我用x代替这个,会有什么不同吗。X在某些方法中?可能x将是指一个变量,这是局部的考虑方法?我指的是只有在这个方法中才能看到的变量。
那么this.method()呢?我能用吗?我应该用它吗?如果我只是使用方法(),它不是,默认情况下,应用到当前对象?
我知道这是指一个当前对象。但是我不知道什么时候我真的需要使用它。例如,如果我用x代替这个,会有什么不同吗。X在某些方法中?可能x将是指一个变量,这是局部的考虑方法?我指的是只有在这个方法中才能看到的变量。
那么this.method()呢?我能用吗?我应该用它吗?如果我只是使用方法(),它不是,默认情况下,应用到当前对象?
当前回答
如果我用“x”而不是“this”会有什么不同吗?X "在某些方法中?
通常不会。但有时也会有所不同:
class A {
private int i;
public A(int i) {
this.i = i; // this.i can be used to disambiguate the i being referred to
}
}
如果我只是使用“method()”,它会不会被默认应用到当前对象?
是的。但是如果需要的话,this.method()会澄清调用是由这个对象进行的。
其他回答
以下是在java中使用' this '关键字的方法:
使用此关键字引用当前类实例变量 使用this()调用当前类构造函数 使用此关键字返回当前类实例 使用此关键字作为方法参数
https://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html
关于威廉·布伦德尔的帖子和坦白问题,关于案例2。这里有一个例子:
public class Window {
private Window parent;
public Window (Window parent) {
this.parent = parent;
}
public void addSubWindow() {
Window child = new Window(this);
list.add(child);
}
public void printInfo() {
if (parent == null) {
System.out.println("root");
} else {
System.out.println("child");
}
}
}
我曾在与对象建立父子关系时看到过这种用法。但是,请注意,为了简洁起见,这里进行了简化。
当有两个变量一个实例变量和另一个同名的局部变量时,我们使用这个。引用当前执行对象,以避免名称之间的冲突。
this的第二个重要用途(除了用局部变量隐藏之外,很多人已经说过了)是在从嵌套的非静态类访问外部实例时:
public class Outer {
protected int a;
public class Inner {
protected int a;
public int foo(){
return Outer.this.a;
}
public Outer getOuter(){
return Outer.this;
}
}
}
只有当存在同名重叠的局部变量时才需要使用它——而且大多数人只使用它。(例如,Setter方法。)
当然,使用它的另一个很好的理由是它会在ide中弹出智能感知:)