首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java -何时使用'this‘关键字

Java -何时使用'this‘关键字
EN

Stack Overflow用户
提问于 2010-03-12 06:11:17
回答 9查看 75.8K关注 0票数 78

在Java中使用this关键字的最佳实践是什么?例如,我有以下类:

class Foo {
    Bar bar;

    public Foo(Bar bar) {
         this.bar = bar;
    }
}

这很好,但是Java足够聪明,如果我将构造函数中的语句改为

 bar = bar;

那么为什么要使用this关键字呢?(我意识到在某些情况下,使用它是完全必要的,我只是要求这样的情况)。实际上,我倾向于纯粹为了可读性而使用关键字,但常见的做法是什么呢?例如,在商店中到处使用它会让我的代码看起来有点凌乱

boolean baz;
int someIndex = 5;
this.baz = this.bar.getSomeNumber() == this.someBarArray[this.someIndex].getSomeNumber();

显然,这是一段糟糕的代码,但它说明了我的示例。在这些情况下,这仅仅是个人喜好吗?

EN

回答 9

Stack Overflow用户

发布于 2010-03-12 06:16:12

当你有一个与字段同名的参数时,你应该使用它,否则你会遇到问题。它可以编译,但不一定会做你想要的事情。

至于其他任何地方,除非为了可读性而需要,否则不要使用它。如果你到处使用它,你20%的代码将包含'this‘这个单词!

票数 17
EN

Stack Overflow用户

发布于 2010-03-12 08:13:01

this关键字是指调用某个方法的类的对象。

例如:

public class Xyz {  
    public Xyz(Abc ob)
    {
        ob.show();
    }
}

public class Abc {
    int a = 10;

    public Abc()
    {
        new Xyz(this);
    }

    public void show()
    {
        System.out.println("Value of a " + a);
    }

    public static void main(String s[])
    {
        new Abc();
    }
}

Abc()中,我们调用Xyz(),它需要Abc类的对象。所以我们可以传递this而不是新的Abc(),因为如果我们在这里传递新的Abc(),它会一次又一次地调用它自己。

我们还用它来区分类的变量和方法的局部变量。e.g

class Abc {
    int a;

    void setValue(int a)
    {
        this.a = a;
    }
}

这里this.a是指Abc类的变量a。因此与使用新的Abc().a;具有相同的效果。

所以你可以说this指的是当前类的对象。

票数 11
EN

Stack Overflow用户

发布于 2010-03-12 06:16:30

public Foo(Bar bar) {
     this.bar = bar;
}

不同于

public Foo(Bar bar) {
     bar = bar;
}

在第二种情况下,作用域中的bar是参数,因此您将其分配给自己。this.bar仍然是null

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2429062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档