JAVA中this(var)和this.var之间的区别是什么
JAVA中this(var)和this.var之间的区别是什么JAVA中this(var)和this.var之间的区别是什么,java,Java,JAVA中this(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 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());
}
}
第一个(this(var)
)调用构造函数,将var
作为参数,而第二个调用对象中的var
属性。给定类
public class Clock
{
private long time = 0;
public Clock(long time)
{
...
}
}
你用
使用参数this(x)
调用构造函数。这是调用的,您只能从构造函数调用x
,其中它必须是第一条语句。构造函数不能通过构造函数链接调用自己This()
- 您可以使用
将名为this.time=x
的成员设置为time
的值<代码>此表示时间的范围,例如,如果您使用的方法带有局部变量x
,则使用时间
将获得与该方法最接近的范围,即局部变量。如果需要实例范围,可以使用时间
this.time
如需进一步阅读,请参阅和以及以下部分。this()调用另一个构造函数
this。
表示使用this
对象上的字段,var
是Java10中的一个关键字。若要查看每行代码何时生效,我建议您在调试器中逐步执行代码。请检查以获得完整的this
含义。@PeterLawreyvar
在Java 10中不是关键字,它是保留的类型名(请参阅)@markrotVeel感谢您的更正。请注意this()
仅在构造函数中作为第一条语句起作用!!,在一个方法中是不允许的。谢谢,我不是很确定。因此,这是每次使用这个时的构造函数链接。请检查以完成您的答案。以改进第二个解释this.time
允许您指定范围。如果您使用的方法带有局部变量time
,则使用time
将获得该方法的“最近”范围,即局部范围。如果需要实例范围,可以使用this.time
。当我们在一个内部类中时,它变得有点复杂。。。我不会再深入这里;)不,没关系。你的答案已经很好了,所以在这一点上没有必要创建我自己的。