Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
System.currentTimeMillis() / System.nanoTime() / System.exit()
システムの時刻取得・時間計測・プロセス制御を行うメソッドです。処理時間の計測には『System.nanoTime()』が推奨されます。
構文
// 現在時刻をUNIXエポック(1970-01-01 00:00:00 UTC)からのミリ秒で返します。
long millis = System.currentTimeMillis();
// 高精度な経過時間の計測に使います(絶対時刻ではありません)。
long nano = System.nanoTime();
// JVMを終了します(0は正常終了、0以外は異常終了)。
System.exit(int status);
// ガベージコレクションの実行を要求します(実行を保証しません)。
System.gc();
// 環境変数を取得します。
String path = System.getenv("PATH");
// システムプロパティを取得します。
String osName = System.getProperty("os.name");
String javaVer = System.getProperty("java.version");
主なメソッド一覧
| メソッド | 概要 |
|---|---|
| System.currentTimeMillis() | 現在時刻をUNIXエポックからのミリ秒(long型)で返します。 |
| System.nanoTime() | ナノ秒単位の高精度な経過時間を返します。起点は任意で、絶対時刻ではありません。処理時間計測に使います。 |
| System.exit(int status) | JVMを終了します。0 は正常終了、それ以外は異常終了を示します。 |
| System.gc() | ガベージコレクタの実行を要求しますが、実行タイミングはJVM次第です。 |
| System.getenv(String name) | 指定した環境変数の値を取得します。存在しない場合は null を返します。 |
| System.getProperty(String key) | システムプロパティ(OS名・Javaバージョンなど)を取得します。 |
| System.arraycopy(src, srcPos, dest, destPos, length) | 配列の一部を別の配列に高速コピーします。 |
| System.lineSeparator() | OSに応じた改行文字(\n または \r\n)を返します。 |
サンプルコード
// currentTimeMillis() で現在時刻をミリ秒で取得します。
long now = System.currentTimeMillis();
System.out.println("現在時刻(ms): " + now);
// nanoTime() で処理時間を計測します。
long start = System.nanoTime();
long sum = 0;
for (int i = 0; i < 1_000_000; i++) sum += i;
long end = System.nanoTime();
System.out.println("合計: " + sum);
System.out.printf("処理時間: %.3f ms%n", (end - start) / 1_000_000.0);
// 例: 『処理時間: 2.456 ms』と出力されます。
// currentTimeMillis() でDateに変換します。
import java.util.Date;
Date date = new Date(System.currentTimeMillis());
System.out.println(date); // 現在日時が出力されます。
// getProperty() でシステム情報を取得します。
System.out.println(System.getProperty("os.name")); // 例: 『Mac OS X』と出力されます。
System.out.println(System.getProperty("java.version")); // 例: 『21.0.2』と出力されます。
System.out.println(System.getProperty("user.home")); // ホームディレクトリのパスが出力されます。
// arraycopy() で配列を高速コピーします。
int[] src = {1, 2, 3, 4, 5};
int[] dest = new int[5];
System.arraycopy(src, 1, dest, 0, 3); // src[1]〜src[3](2,3,4)をdest[0]〜にコピーします。
System.out.println(java.util.Arrays.toString(dest)); // 『[2, 3, 4, 0, 0]』と出力されます。
概要
処理時間の計測には『System.currentTimeMillis()』より精度の高い『System.nanoTime()』を使うことが推奨されます。nanoTime() の戻り値はシステム起点からの経過ナノ秒であり、異なる呼び出し間の差分のみが意味を持ちます。
『System.exit()』はJVM全体を即座に終了させるため、try-finally ブロックや シャットダウンフックが実行されない場合があります。通常のアプリケーションでは使用を避け、例外処理で制御してください。
標準出力への書き出しには『System.out.println() / System.err.println()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。