Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA中this(var)和this.var之间的区别是什么_Java - Fatal编程技术网

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;

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 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
含义。@PeterLawrey
var
在Java 10中不是关键字,它是保留的类型名(请参阅)@markrotVeel感谢您的更正。请注意
this()
仅在构造函数中作为第一条语句起作用!!,在一个方法中是不允许的。谢谢,我不是很确定。因此,这是每次使用
这个
时的构造函数链接。请检查以完成您的答案。以改进第二个解释
this.time
允许您指定范围。如果您使用的方法带有局部变量
time
,则使用
time
将获得该方法的“最近”范围,即局部范围。如果需要实例范围,可以使用
this.time
。当我们在一个内部类中时,它变得有点复杂。。。我不会再深入这里;)不,没关系。你的答案已经很好了,所以在这一点上没有必要创建我自己的。