精确度不同:System.nanoTime() 返回的是纳秒级别的时间戳,其精确度比 System.currentTimeMillis() 高。System.nanoTime() 主要用于测量时间间隔或者性能分析。
时间基准不同:System.currentTimeMillis() 返回的是自 1970 年 1 月 1 日以来的毫秒数,是相对于系统时间的,它可以被改变,比如用户手动修改系统时间。而 System.nanoTime() 返回的是相对于 JVM 启动时的纳秒数,不受系统时间影响。
用途不同:System.currentTimeMillis() 适用于需要获取当前时间的场景,比如记录日志,计算时间间隔等;而 System.nanoTime() 适用于需要高精度计时的场景,比如性能评估,定时任务等。
总的来说,如果只是需要获取当前时间或者计算时间间隔,可以使用 System.currentTimeMillis();如果需要进行高精度的时间测量或者性能评估,可以使用 System.nanoTime()。