提问者:小点点

打印出来的结果是什么意思。 Java的System.nanoTime()


我不明白从打印出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

共3个答案

匿名用户

查看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方法,它会给出以纳秒为单位的当前时间。 另外,由于字段timestartstatice,它是在类time加载到JVM时分配的,因此该字段节省了加载类的时间。 方法getTime只计算与TimeStarted的当前时间的差值,然后乘以10e-9,将其从nano转换为秒,此值表示自加载类以来传递的值。