Java java.langパッケージのSystemクラス

Systemクラスは、実行時間環境に関連するプロパティとメソッドを持っている。Systemクラスでは、outとinを利用した標準入力と標準出力、errを利用したエラー出力に関するクラス変数を持ち、オブジェクトをコピーするメソッドや、プログラムを作成するときに使用できる便利なメソッドを提供する。

System変数

変数 説明
final static InputStream in 標準入力に使用される。
final static PrintStream out 標準出力に使用される。print()、println()のパラメータを受け取り、モニターに出力を行う。
final static PrintStream err エラー出力に使用される。print()、println()のパラメータを受け取り、モニターにエラー出力を行う。

Systemの主なメソッド

メソッド 説明
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 配列をコピーする。srcとdestはコピー元とコピー先の配列変数であり、srcPosとdestPosはコピーが開始される位置、lengthはコピーされる配列のサイズである。
static long currentTimeMillis() 1970年1月1日午前0時から現在までの時間をミリ秒で返す。
static void exit(int status) 現在実行中のアプリケーションを終了させる。statusで終了状態を返す。通常、マイナス(-)は異常終了を意味する。
static void gc() ガベージコレクション(garbage collection)を実行する。
static Properties getProperties() システム環境変数の一覧を取得する。
static String getProperty(String key) システム環境変数を取得する。
static String getProperty(String key, String def) システム環境変数がない場合のデフォルト値を指定して取得する。

Systemの例

例) System.currentTimeMillis()

次はSystem.currentTimeMillis()メソッドの例である。

package com.devkuma.tutorial.java.lang;

public class SystemCurrentTimeMillis {

    public static void main(String[] args) throws InterruptedException {

        long start = System.currentTimeMillis();
        System.out.println("start time : " + System.currentTimeMillis());

        Thread.sleep(1000); // 1秒間停止

        long end = System.currentTimeMillis();
        System.out.println("end time : " + System.currentTimeMillis());

        System.out.println("duration : " + (end - start));
    }
}

実行結果は以下のとおりである。

start time : 1497970891769
end time : 1497970892771
duration : 1002

例) System.arraycopy()

次はSystem.arraycopy()メソッドの例である。

package com.devkuma.tutorial.java.lang;

public class SystemArraycopy {

    public static void main(String[] args) {
        char[] src = { 'a', 'b', 'c', 'd', 'e' };
        char[] dest = { 'x', 'x', 'x', 'x', 'x' };

        System.out.println("src=" + new String(src));
        System.out.println("dest=" + new String(dest));
        System.arraycopy(src, 0, dest, 0, src.length);
        System.out.println();
        System.out.println("src=" + new String(src));
        System.out.println("dest=" + new String(dest));

    }
}

実行結果は以下のとおりである。

src=abcde
dest=xxxxx

src=abcde
dest=abcde

例) System.getProperties(), System.getProperty()

次はシステム環境変数に関するSystem.getProperties()System.getProperty()メソッドの例である。

package com.devkuma.tutorial.java.lang;

import java.util.Enumeration;
import java.util.Properties;

public class SystemProperties {

    public static void main(String[] args) {

        // Java Runtime Environment 버전
        System.out.println("java.version=" + System.getProperty("java.version"));
        // Java Runtime Environment 벤더
        System.out.println("java.vendor=" + System.getProperty("java.vendor"));
        // Java Runtime Environment 설치 디렉터리
        System.out.println("java.home=" + System.getProperty("java.home"));

        // Java 가상 머신 사양
        System.out.println("java.vm.specification.version=" + System.getProperty("java.vm.specification.version"));
        System.out.println("java.vm.specification.vendor=" + System.getProperty("java.vm.specification.vendor"));
        System.out.println("java.vm.specification.name=" + System.getProperty("java.vm.specification.name"));

        // operating system 정보
        System.out.println("os.name=" + System.getProperty("os.name"));
        System.out.println("os.arch=" + System.getProperty("os.arch"));
        System.out.println("os.version=" + System.getProperty("os.version"));

        // 전체 정보 조회
        Properties prop = System.getProperties();
        Enumeration<?> enu = prop.keys();
        while (enu.hasMoreElements()) {
            String key = (String) enu.nextElement();
            String value = (String) prop.get(key);
            System.out.println(key + "=" + value);
        }
    }
}

実行結果は以下のとおりである。

java.version=1.8.0_161
java.vendor=Oracle Corporation
java.vendor.url=http://java.oracle.com/
java.home=/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home/jre
java.vm.specification.version=1.8
java.vm.specification.vendor=Oracle Corporation
java.vm.specification.name=Java Virtual Machine Specification
java.vm.version=25.161-b12
java.vm.vendor=Oracle Corporation
java.vm.name=Java HotSpot(TM) 64-Bit Server VM
java.specification.version=1.8
java.specification.vendor=Oracle Corporation
java.specification.name=Java Platform API Specification
java.class.version=52.0
java.class.path=/Library/Java/JavaVirtualMachines...(省略)...
java.library.path=/Users/kimkc/Library/Java/Extensions:...(省略)...
java.io.tmpdir=/var/folders/f2/s8f8bt7j2vdf4538y4lydp480000gn/T/
java.compiler=null
java.ext.dirs=/Users/kimkc/Library/Java/Extensions:...(省略)...
os.name=Mac OS X
os.arch=x86_64
os.version=10.13.6
file.separator=/
path.separator=:
line.separator=

user.name=kimkc
user.home=/Users/kimkc
user.dir=/Users/kimkc/dev/workspace/java-tutorial

java.runtime.name=Java(TM) SE Runtime Environment
...
sun.cpu.isalist=