JAVA中这个(var)和this.var有什么区别

时间:2018-03-21 08:23:02

标签: java

JAVA中这个(var)和this.var有什么区别。?

public class Clock {

    private long time = 0;

    private Clock(long time) {
        this.time = time;
    }

    public Clock(long time, long timeOffset) {
        this(time);
        this.time += timeOffset;
    }

    public static Clock newClock() {
        return new Clock(System.currentTimeMillis());
    }
}

2 个答案:

答案 0 :(得分:4)

鉴于课程

public class Clock
{
    private long time = 0;

    public Clock(long time)
    {
        ...
    }
}

你使用

  • this(x)使用参数x调用构造函数。这称为constructor chaining,您只能从构造函数中调用this(),它必须是第一个语句。构造函数可能不会通过构造函数链接自称。
  • 并使用this.time = x将名为time的成员设置为x的值。 this表示time的范围,例如如果您使用的是局部变量time的方法,则使用time将从方法获取最近的范围,即本地方法。如果您需要实例范围,请使用this.time

如需进一步阅读,请参阅Java Language Specs - 8.8.7 Constructor BodyJava Language Specs - 6.3 Scope of a declaration以及以下部分。

答案 1 :(得分:2)

第一个(this(var))使用var作为参数调用构造函数,而第二个仅引用对象中的var属性。