使用java中的System.currentTimeMillis()计算经过的时间
出于某种原因,我可以在程序中获得开始时间和停止时间(通常相差3毫秒),但当我打印使用java中的System.currentTimeMillis()计算经过的时间,java,Java,出于某种原因,我可以在程序中获得开始时间和停止时间(通常相差3毫秒),但当我打印getElapsedTime()方法的结果时,它总是返回0。上面列出的代码是创建名为sortTime的StopWatch对象 也许四舍五入有问题? 也许getElapsedTime()方法本身有问题 System.out.println(sortTime.start()); // Start Timer java.util.Arrays.sort(numbers); // Sort the arra
getElapsedTime()
方法的结果时,它总是返回0。上面列出的代码是创建名为sortTime
的StopWatch
对象
也许四舍五入有问题?
也许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);
}
}
例如,当我运行程序时,结果是:
14428779724661442877972469
运行时间为:0您正在创建与类变量同名的局部变量:
long start() {
long startTime = System.currentTimeMillis();
return startTime;
}
在该函数中使用long startTime
会生成一个与名为startTime
的类成员不同的局部变量。将此更改为:
long start() {
startTime = System.currentTimeMillis();
return startTime;
}
您正在创建与类变量同名的局部变量:
long start() {
long startTime = System.currentTimeMillis();
return startTime;
}
在该函数中使用long startTime
会生成一个与名为startTime
的类成员不同的局部变量。将此更改为:
long start() {
startTime = System.currentTimeMillis();
return startTime;
}
startTime
和endTime
已重新声明/隐藏为局部变量,实例字段保留其默认值(of0
)
相反,请使用实例字段
long start() {
startTime = System.currentTimeMillis();
return startTime;
}
long stop() {
endTime = System.currentTimeMillis();
return endTime;
}
startTime
和endTime
已重新声明/隐藏为局部变量,实例字段保留其默认值(of0
)
相反,请使用实例字段
long start() {
startTime = System.currentTimeMillis();
return startTime;
}
long stop() {
endTime = System.currentTimeMillis();
return endTime;
}
相关:要测量经过的时间,请不要使用
System.currentTimeMillis()
,因为它可能是错误的。相关:要测量经过的时间,请不要使用System.currentTimeMillis()
,因为它可能是错误的。