繁体   English   中英

用Java中的System.currentTimeMillis()计算经过时间

[英]Calculate elapsed time with System.currentTimeMillis() in java

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

舍入可能有问题吗? 也许getElapsedTime()方法本身存在问题?

    System.out.println(sortTime.start()); // Start Timer

    java.util.Arrays.sort(numbers); // Sort the array

    System.out.println(sortTime.stop());// stop timer

    System.out.println("the elapsed time is: " + sortTime.getElapsedTime());
    }
} //end of main class (used for testing)

//Define Class
 class StopWatch {
 long startTime;
 long endTime;

 //Constructors
 public StopWatch () { 
 }

 //Methods
long start() {
    long startTime = System.currentTimeMillis();
    return startTime; 
}
long stop() {
    long endTime = System.currentTimeMillis();
    return endTime; 
}
long getElapsedTime() {
        return (endTime - startTime);
    }
     }

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

1442877972466
1442877972469
经过的时间是:0

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

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

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

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

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; 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM