使用java中的System.currentTimeMillis()计算已用时间

时间:2015-09-21 23:24:48

标签: java

出于某种原因,我可以在程序中获得开始时间和停止时间(通常相差3毫秒),但是当我打印getElapsedTime()方法的结果时,它总是返回0。列出的代码上方是创建名为StopWatch的{​​{1}}对象。

也许圆角有问题? 也许sortTime方法本身存在问题?

getElapsedTime()

例如,当我运行程序时,结果是:

1442877972466
1442877972469
经过的时间是:0

2 个答案:

答案 0 :(得分:4)

您正在创建与类变量同名的局部变量:

long start() {
    long startTime = System.currentTimeMillis();
    return startTime; 
}

在此函数中使用long startTime会使名为startTime的类成员的不同的局部变量。将其更改为:

long start() {
    startTime = System.currentTimeMillis();
    return startTime; 
}

答案 1 :(得分:3)

startTimeendTime已被重新声明/隐藏为局部变量,实例字段的默认值(0

long start() {
    long startTime = System.currentTimeMillis();
    return startTime; 
}
long stop() {
    long endTime = System.currentTimeMillis();
    return endTime; 
}

相反,请使用实例字段...

long start() {
    startTime = System.currentTimeMillis();
    return startTime; 
}
long stop() {
    endTime = System.currentTimeMillis();
    return endTime; 
}