我知道这个指的是当前对象。但我不知道什么时候我真的需要使用它。例如,如果我在某些方法中使用x而不是this.x,会有什么区别吗?可能是x将引用所考虑方法的局部变量?我指的是只有在这种方法中才能看到的变量
那么这个.method()呢?我能用它吗?我应该用它吗。如果我只使用method(),默认情况下它不会应用于当前对象吗
这个关键字主要用于三种情况。第一个也是最常见的是setter方法来消除变量引用的歧义。第二种是当需要将当前类实例作为参数传递给另一个对象的方法时。第三种方法是从构造函数中调用备用构造函数
案例1:使用此消除变量引用的歧义。在Java setter方法中,我们通常传入一个与试图设置的私有成员变量同名的参数。然后我们将参数x分配给this.x。这表明您正在将参数“name”的值指定给实例变量“name”
公共类Foo
{
私有字符串名称;
公共void集合名(字符串名){
this.name=名称;
}
}
案例2:使用此作为传递给另一个对象的参数
公共类Foo
{
公共字符串useBarMethod(){
Bar theBar=新的Bar();
返回theBar.bar方法(this);
}
公共字符串getName(){
返回“Foo”;
}
}
公共类酒吧
{
公共方法(Foo obj){
obj.getName();
}
}
案例3:使用this调用备用构造函数。在评论中,this正确地指出了this的另一个常用用法。当一个类有多个构造函数时,您可以使用this(arg0,arg1,…)调用您选择的另一个构造函数,前提是在构造函数的第一行这样做
类Foo
{
公共食物({
这(“某些默认值的酒吧”);
//其他可选线路
}
公共Foo(字符串栏){
//用酒吧做点什么
}
}
我还看到这个用来强调引用实例变量的事实(无需消除歧义),但在我看来这是一个罕见的情况