我不明白从打印出timestarted
,然后再打印出gettime()
得到了什么。 我打印出来的是什么? 打印出来的值是什么意思?
我刚刚开始学习Java,并试图了解如何与帧率工作。
Time.java
public class Time {
public static double timeStarted = System.nanoTime();
public static double getTime() { return (System.nanoTime() - timeStarted) * 10E-9; }
}
main.java
public class Main {
public static void main(String[] args) {
Time time = new Time();
System.out.println(time.timeStarted);
System.out.println(time.getTime());
}
}
控制台:
4.24512563119081E14
0.01404352
查看Java-doc:https://docs.oracle.com/javase/7/docs/api/Java/lang/system.html#nanoTime()
system.nanoTime()
返回以纳秒为单位返回最精确的可用系统计时器的当前值。 返回的值表示自某个固定但任意的时间以来经过的纳秒。
将System.nanoTime()
的返回值与10e-9
相乘,将得到以秒为单位的当前时间乘以10。 (要正确地转换成秒,你必须乘以1e-9
。我猜这是原意吧?)
由于要从开始时间减去当前时间,getTime()
的返回值将表示自time
-类加载以来已经过去的时间,单位为秒乘以10。
如果您查看一下System.nanoTime
方法,它会给出以纳秒为单位的当前时间。 另外,由于字段timestart
是statice
,它是在类time
加载到JVM时分配的,因此该字段节省了加载类的时间。 方法getTime
只计算与TimeStarted
的当前时间的差值,然后乘以10e-9
,将其从nano转换为秒,此值表示自加载类以来传递的值。