-3

System.currentTimeMillis()让我们观察以下在for循环中使用的 Java 代码段。

package loops;

final public class Main
{
    public static void main(String... args)
    {
        final long MAX_VAL=Long.MAX_VALUE;
        final long CURRENT_MILLIS=System.currentTimeMillis(); 

        System.out.println("MAX_VAL = "+MAX_VAL);
        System.out.println("CURRENT_MILLIS = "+CURRENT_MILLIS);

        for(long time = 0; time < CURRENT_MILLIS; time++)
        {
            System.out.println("inside for = "+time);
        }
    }
}

在上面的代码中,final long类型变量保存了系统维护的当前毫秒数,尽管循环陷入无限循环,但CURRENT_MILLIS它始终小于Java(MAX_VAL)中数据类型的大小。如何?longfor

4

2 回答 2

1

请在睡前运行上面的程序,早上醒来时看看输出。你会得到你的答案......

于 2012-01-14T07:58:06.073 回答
1

如果您担心时间之间的比较,您可以使用

while (System.currentTimeMillis() - start < RUN_TIME)

这可能是 nanoTime 的问题,因为它可能会在 292 年后溢出。但是,使用 currentTimeMillis,您大约有 2.92 亿年。

于 2012-01-14T08:37:33.637 回答