java和this()之间有什么区别?

时间:2015-02-25 12:23:38

标签: java java-ee

请确认我是this关键字引用其拥有的类,this()方法引用其拥有的类构造函数。

class Tester {

    private String blogName;

    public Tester() {
        this("stackoverflow");
    }

    public Tester(String str) {
        this.blogName = str;
    }

    public String getBlogName() {
        return blogName;
    }
}

如果这些之间存在其他差异,这对我有帮助。

4 个答案:

答案 0 :(得分:1)

this是对代表当前方法的对象的引用。 this(anything)是构造函数的调用。

答案 1 :(得分:0)

第一个示例在默认构造函数中调用重载的构造函数。您可以通过这种方式调用所有重载的构造函数。它必须是构造函数中的第一行,就像调用super()。

第二个显示特殊名称this如何引用类中的当前实例。它只需要整理名称重复:

public class ThisDemo {

    private static final String DEFAULT_VALUE = "REQUIRED"; 
    private String value;

    public ThisDemo() {
        this(DEFAULT_VALUE);
    }

    publi ThisDemo(String value) {
        // Required here because the private member and parameter have same name
        this.value = value;
    }

    public String getValue() { 
        // Not required here, but I prefer to add it.  
        return value;
    }
}

答案 2 :(得分:0)

this("stackoverflow");正在调用类中的其他构造函数(这称为委托构造函数)。

this.blogName= str1;正在为字段 str1引用的blogName分配引用。此实例中的this是冗余的,但用于将字段名称歧义为具有相同名称的函数参数。

答案 3 :(得分:0)

this是Java中的关键字,它表示该类的当前实例。

this("stackoverflow")正在调用类中的构造函数,这将是一个重载调用。您可以通过这种方式调用同一类的任何其他构造函数。