Java毫秒到纳秒

Java毫秒到纳秒,java,Java,我刚刚开始学习Java,我想制作随机数组并测量时间。我使用了System.currentTimeMillis()在填充数组的开始处,然后和。然后我想将毫秒转换为纳秒,并使用longtotal=TimeUnit.millizes.toNanos(time1)但发生了故障: import java.util.*; import java.util.concurrent.TimeUnit; public class main { public static void main(String[] ar

我刚刚开始学习Java,我想制作随机数组并测量时间。我使用了
System.currentTimeMillis()在填充数组的开始处,然后和。然后我想将毫秒转换为纳秒,并使用
longtotal=TimeUnit.millizes.toNanos(time1)但发生了故障:

import java.util.*;
import java.util.concurrent.TimeUnit;

public class main {
public static void main(String[] args) {

long time1,time2,time3;
int [] array =  new int[10];
Random rand =new Random(100);
time1=System.currentTimeMillis();
for(int i=0;i<array.length;i++){
array[i]=rand.nextInt(100);
}
time2=System.currentTimeMillis()-time1;

    long total=TimeUnit.MILLISECONDS.toNanos(time1);
    System.out.println("Time is:"+time1
    );

}

}
import java.util.*;
导入java.util.concurrent.TimeUnit;
公共班机{
公共静态void main(字符串[]args){
长时间1,时间2,时间3;
int[]数组=新的int[10];
随机随机数=新随机数(100);
time1=System.currentTimeMillis();

对于(inti=0;iWell,而不是使用

System.currentTimeMillis()
你可以用

System.nanoTime()
它以纳秒为单位提供时间,无需进行任何转换

我也认为这可能是错误的:

long total=TimeUnit.MILLISECONDS.toNanos(time1);
System.out.println("Time is:"+time1);
也许您想打印
total
而不是
time1

编辑

请注意,正如Mark Rotteveel所说,在
System.nanoTime
System.currentTimeMillis()
中是不同的

来自Javadocs:

System.currentTimeMillis()

以毫秒为单位返回当前时间。
请注意,虽然返回值的时间单位为毫秒,但值的粒度取决于底层操作系统,可能更大。
例如,许多操作系统以几十毫秒为单位测量时间。

System.nanoTime()

返回最精确的可用系统计时器的当前值,单位为纳秒。

此方法只能用于测量经过的时间,与系统或挂钟时间的任何其他概念无关。

好的,不要使用

System.currentTimeMillis()
你可以用

System.nanoTime()
它以纳秒为单位提供时间,无需进行任何转换

我也认为这可能是错误的:

long total=TimeUnit.MILLISECONDS.toNanos(time1);
System.out.println("Time is:"+time1);
也许您想打印
total
而不是
time1

编辑

请注意,正如Mark Rotteveel所说,在
System.nanoTime
System.currentTimeMillis()
中是不同的

来自Javadocs:

System.currentTimeMillis()

以毫秒为单位返回当前时间。
请注意,虽然返回值的时间单位为毫秒,但值的粒度取决于底层操作系统,可能更大。
例如,许多操作系统以几十毫秒为单位测量时间。

System.nanoTime()

返回最精确的可用系统计时器的当前值,单位为纳秒。

此方法只能用于测量经过的时间,与系统或挂钟时间的任何其他概念无关。

您可能需要像这样重写代码:

public static void main(String[] args) {
    long start, end, difference;

    start = System.nanoTime();

    //code to meassure here

    end = System.nanoTime();
    difference = end - start;

    System.out.println("Time taken:" + difference);
}

您可能希望像这样重写代码:

public static void main(String[] args) {
    long start, end, difference;

    start = System.nanoTime();

    //code to meassure here

    end = System.nanoTime();
    difference = end - start;

    System.out.println("Time taken:" + difference);
}

“Мааааааааааааааааааааааафааааааааа107(意思是“代码”):)我想你需要
System.out.println(“时间是:“+total”);
并将total改为使用
time2
而不是
time1
你想告诉我们哪里不对吗?请注意
System.nanoTime()
提供时间的方式与
currentTimeMillis()不同
有。@MarkrotVeel是的,我忘了说这个,我会更新我的答案…OP也很可能会打印出开始时间和结束时间之间的差异(
time2
),而不是只打印开始时间(
time1
)在nano中。注意
System.nanoTime()
提供时间的方式与
currentTimeMillis()
提供时间的方式不同。@MarkrotVeel是的,我忘了说这句话,我会更新我的答案……而且OP很可能会打印开始时间和结束时间之间的差异(
time2
),而不是只打印开始时间(
time1
)。