-3

ループで使用System.currentTimeMillis()するJavaの次のコードセグメントを見てみましょう。for

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型変数はシステムによって維持される現在のミリ秒を保持します。これは、ループが無限ループに陥っていても、Javaのデータ型のサイズCURRENT_MILLISよりも常に小さくなります。どのように?(MAX_VAL)longfor

4

2 に答える 2

1

寝る前に上記のプログラムを実行して、朝起きたときの出力を確認してください。答えが返ってきます...

于 2012-01-14T07:58:06.073 に答える
1

時間の比較が気になる場合は、

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

これは、292年後にオーバーフローする可能性があるため、nanoTimeの問題になる可能性があります。ただし、currentTimeMillisを使用すると、約2億9200万年になります。

于 2012-01-14T08:37:33.637 に答える