public final class System extends Object
System クラスには有用なクラスフィールドおよびメソッドがあります。インスタンス化することはできません。
System クラスによって得られる機能には、標準入力、標準出力、およびエラー出力ストリーム、外部的に定義されたプロパティーおよび環境変数へのアクセス、ファイルおよびライブラリのローディング方法、配列の一部をすばやくコピーするユーティリティーメソッドがあります。
| 修飾子と型 | フィールドと説明 | 
|---|---|
| static PrintStream | err「標準」エラー出力ストリームです。 | 
| static InputStream | in「標準」入力ストリームです。 | 
| static PrintStream | out「標準」出力ストリームです。 | 
| 修飾子と型 | メソッドと説明 | 
|---|---|
| static void | arraycopy(Object src,          int srcPos,          Object dest,          int destPos,          int length)指定位置で開始する指定ソース配列から、転送先配列の指定位置に配列をコピーします。 | 
| static String | clearProperty(String key)指定されたキーによって示されたシステムプロパティーを削除します。 | 
| static Console | console()現在の Java 仮想マシンに関連した一意の  Consoleオブジェクトがある場合に、それを返します。 | 
| static long | currentTimeMillis()ミリ秒で表される現在の時間を返します。 | 
| static void | exit(int status)現在実行している Java 仮想マシンを終了します。 | 
| static void | gc()ガベージコレクタを実行します。 | 
| static Map<String,String> | getenv()現在のシステム環境の変更できない文字列マップのビューを返します。 | 
| static String | getenv(String name)指定された環境変数の値を取得します。 | 
| static Properties | getProperties()現在のシステムプロパティーを決定します。 | 
| static String | getProperty(String key)指定されたキーによって示されるシステムプロパティーを取得します。 | 
| static String | getProperty(String key,            String def)指定されたキーによって示されるシステムプロパティーを取得します。 | 
| static SecurityManager | getSecurityManager()システムセキュリティーインタフェースを取得します。 | 
| static int | identityHashCode(Object x)指定されたオブジェクトのクラスが hashCode() をオーバーライドしているかどうかに関係なく、デフォルトの hashCode() メソッドにより返されるものと同じ、指定されたオブジェクトのハッシュコードを返します。 | 
| static Channel | inheritedChannel()Java 仮想マシンを作成したエンティティーから継承されたチャネルを返します。 | 
| static String | lineSeparator()システムに依存する行区切り文字列を返します。 | 
| static void | load(String filename)指定されたファイル名を持つコードファイルを、ダイナミックライブラリとしてローカルファイルシステムからロードします。 | 
| static void | loadLibrary(String libname)引数  libnameによって指定されるシステムライブラリをロードします。 | 
| static String | mapLibraryName(String libname)ライブラリ名を、ネイティブライブラリを表すプラットフォーム依存の文字列にマッピングします。 | 
| static long | nanoTime()実行中の Java 仮想マシンの高精度時間ソースの現在値を、ナノ秒の単位で返します。 | 
| static void | runFinalization()ファイナライズを保留しているオブジェクトのファイナライズメソッドを実行します。 | 
| static void | runFinalizersOnExit(boolean value)非推奨。 
 このメソッドは本質的に安全ではありません。ファイナライザがライブオブジェクトに対して呼び出される結果になる可能性があり、そのときにほかのスレッドがそれらのオブジェクトを並行して操作していると、動作が異常になるか、デッドロックが発生します。 | 
| static void | setErr(PrintStream err)「標準」エラー出力ストリームを割り当てし直します。 | 
| static void | setIn(InputStream in)「標準」入力ストリームを割り当てし直します。 | 
| static void | setOut(PrintStream out)「標準」出力ストリームを割り当てし直します。 | 
| static void | setProperties(Properties props)システムプロパティーを引数  Propertiesに設定します。 | 
| static String | setProperty(String key,            String value)指定されたキーによって示されるシステムプロパティーを設定します。 | 
| static void | setSecurityManager(SecurityManager s)システムセキュリティーを設定します。 | 
public static final InputStream in
public static final PrintStream out
単純なスタンドアロンの Java アプリケーションにおいて、出力データの行を書き込む一般的な方法は以下のとおりです。
     System.out.println(data)
 
クラス PrintStream の println メソッドを参照してください。
PrintStream.println(), PrintStream.println(boolean), PrintStream.println(char), PrintStream.println(char[]), PrintStream.println(double), PrintStream.println(float), PrintStream.println(int), PrintStream.println(long), PrintStream.println(java.lang.Object), PrintStream.println(java.lang.String)public static final PrintStream err
通常、このストリームはディスプレイ出力、またはホスト環境やユーザーによって指定される出力先の出力と一致します。主な出力ストリームである変数 out 値が、一般的に継続的には監視されていないファイルまたはその他の転送先にリダイレクトしている場合でも、ユーザーに注意を促すためのエラーメッセージまたはその他の情報を表示するために、通例この出力ストリームが使用されます。「標準」入力ストリームを割り当てし直します。
public static void setIn(InputStream in)
セキュリティーマネージャーが存在する場合は、標準入力ストリームを割り当てし直してよいかどうかを確認するために、RuntimePermission("setIO") アクセス権を使って checkPermission メソッドが呼び出されます。
 
in - 新しい標準入力ストリーム。SecurityException - セキュリティーマネージャーが存在し、その checkPermission メソッドが標準入力ストリームの再割り当てを許可しない場合。SecurityManager.checkPermission(java.security.Permission), RuntimePermissionpublic static void setOut(PrintStream out)
セキュリティーマネージャーが存在する場合は、標準出力ストリームを割り当てし直してよいかどうかを確認するために、RuntimePermission("setIO") アクセス権を使って checkPermission メソッドが呼び出されます。
out - 新しい標準出力ストリームSecurityException - セキュリティーマネージャーが存在し、その checkPermission メソッドが標準出力ストリームの再割り当てを許可しない場合。SecurityManager.checkPermission(java.security.Permission), RuntimePermissionpublic static void setErr(PrintStream err)
セキュリティーマネージャーが存在する場合は、標準エラー出力ストリームを割り当てし直してよいかどうかを確認するために、RuntimePermission("setIO") アクセス権を使って checkPermission メソッドが呼び出されます。
err - 新しい標準エラー出力ストリーム。SecurityException - セキュリティーマネージャーが存在し、その checkPermission メソッドが標準エラー出力ストリームの再割り当てを許可しない場合。SecurityManager.checkPermission(java.security.Permission), RuntimePermissionpublic static Console console()
Console オブジェクトがある場合に、それを返します。public static Channel inheritedChannel() throws IOException
 このメソッドから返されるチャネルは、システム全体のデフォルト SelectorProvider オブジェクトの inheritedChannel メソッドを呼び出して取得されたものです。
 このメソッドは、inheritedChannel で説明したネットワーク指向のチャネルに加え、将来的にほかの種類のチャネルも返すようになる予定です。
IOException - 入出力エラーが発生した場合SecurityException - セキュリティーマネージャーがインストールされていて、チャネルへのアクセスが許可されていない場合。public static void setSecurityManager(SecurityManager s)
 セキュリティーマネージャーがすでにインストールされている場合、このメソッドは、最初に RuntimePermission("setSecurityManager") アクセス権を使ってセキュリティーマネージャーの checkPermission メソッドを呼び出すことにより、既存のセキュリティーマネージャーを置換してもよいかどうかを確認します。その結果、SecurityException がスローされることがあります。
 そうでない場合は、引数を現在のセキュリティーマネージャーに設定します。引数が null であり、セキュリティーマネージャーが設定されていない場合、メソッドは何も行わずに復帰します。
s - セキュリティーマネージャー。SecurityException - セキュリティーマネージャーがすでに設定されており、その checkPermission メソッドがセキュリティーマネージャーの置換を許可しない場合。getSecurityManager(), SecurityManager.checkPermission(java.security.Permission), RuntimePermissionpublic static SecurityManager getSecurityManager()
null。setSecurityManager(java.lang.SecurityManager)public static long currentTimeMillis()
 「コンピュータ時間」と協定世界時 (UTC) との間に発生する微妙な相違については、クラス Date の説明を参照してください。
Datepublic static long nanoTime()
このメソッドは、経過時間を測定するためだけに使用できます。システムのほかの概念や壁時計の時刻に関連していません。返される値は、固定された任意の基準時間からの経過時間 (ナノ秒) です。将来的に、値が負の数になる可能性があります。ある Java 仮想マシンのインスタンス内でのこのメソッドのすべての呼び出しでは、同じ情報源が使用されます。ほかの仮想マシンインスタンスでは、おそらく異なる情報源が使用されます。
このメソッドが提供する精度はナノ秒ですが、その解像度 (つまり値の変更頻度) は必ずしもナノ秒ではありません。その解像度は少なくとも currentTimeMillis() と同じである、という以外の保証は一切ありません。
約 292 年 (263 ナノ秒) を超える連続した呼び出しの差異では、数値のオーバーフローにより経過時間が正しく計算されません。
このメソッドから返される値に意味があるのは、Java 仮想マシンの同じインスタンス内で得られたそうした 2 つの値の差を計算する場合だけです。
たとえば、一部のコードで実行にかかる時間を測定するには、次のようになります。
 long startTime = System.nanoTime();
 // ... the code being measured ...
 long estimatedTime = System.nanoTime() - startTime;
2 つの nanoTime 値を比較する場合
 long t0 = System.nanoTime();
 ...
 long t1 = System.nanoTime();
t1 < t0 ではなく t1 - t0 < 0 を使用すべきですが、それは、数値のオーバーフローが発生する可能性があるからです。public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
src によって参照されるソース配列から dest によって参照される転送先配列にコピーします。コピーされる要素の数は、引数 length と一致します。ソース配列の srcPos から srcPos+length-1 までの位置にある要素を、転送先の配列の destPos から destPos+length-1 までの位置にそれぞれコピーします。
 
引数 src および dest が同じ配列オブジェクトである場合、たとえば、まず srcPos から srcPos+length-1 までの位置にある要素を length の数の要素を持つ一時配列にコピーし、次に一時配列の内容を転送先配列の destPos から destPos+length-1 にコピーします。
 
dest が null の場合、NullPointerException がスローされます。
 
src が null の場合、NullPointerException がスローされ、転送先の配列は変更されません。
 
次のどれかが true である場合は、ArrayStoreException をスローし、転送先を修正しません。
 
src が、配列でないオブジェクトを参照する。
dest が、配列でないオブジェクトを参照する。
src および引数 dest が、要素の種類が異なるプリミティブ型の配列である。
src がプリミティブ要素型の配列であり、引数 dest が参照要素型の配列である。
src が参照要素型の配列であり、引数 dest がプリミティブ要素型の配列である。
 
次のどれかが true である場合は、IndexOutOfBoundsException をスローし、転送先を修正しません。
 
srcPos が負の値である。
destPos が負の値である。
length が負の値である。
srcPos+length が src.length (ソース配列の長さ) より大きい場合。
destPos+length が dest.length (転送先配列の長さ) より大きい場合。
 
そうでない場合、srcPos から srcPos+length-1 までの位置にあるソース配列の実際の要素が、代入変換によって転送先配列の要素型に変換できないときは、ArrayStoreException をスローします。この場合、k を長さよりも小さく、負の数でない最小整数型にして、src[srcPos+k] を転送先配列の要素型に変換できないようにします。例外をスローする場合、srcPos から srcPos+k-1 に位置するソース配列の要素はすでに destPos から destPos+k-1 に位置する転送先配列にコピーされています。また、転送先配列のその他の位置は修正されていません。前述の制約のため、上記の記述は実際には両方の配列が参照型の要素型を持つ状況でだけ有効です。
src - 転送元配列。srcPos - ソース配列の開始位置。dest - 転送先配列。destPos - 転送先データ内の開始位置。length - コピーされる配列要素の数。IndexOutOfBoundsException - コピーによって配列の境界を越えたデータのアクセスが生じた場合。ArrayStoreException - 型の不一致により、配列 src の要素が配列 dest に保存できなかった場合。NullPointerException - src と dest のどちらかが null の場合。public static int identityHashCode(Object x)
x - ハッシュコードが計算されるオブジェクトpublic static Properties getProperties()
まず、セキュリティーマネージャーが存在する場合は、引数なしでその checkPropertiesAccess メソッドを呼び出します。これはセキュリティー例外となる場合があります。
 
getProperty(String) メソッドで使用される現在のシステムプロパティーのセットが、Properties オブジェクトとして返されます。システムプロパティーの現在のセットがない場合、システムプロパティーのセットをまず作成してから初期化します。このシステムプロパティーのセットには、常に次のキーの値が含まれます。
 
| キー | 対応する値の説明 | 
|---|---|
| java.version | Java Runtime Environment のバージョン | 
| java.vendor | Java Runtime Environment のベンダー | java.vendor.url | Java ベンダーの URL | 
| java.home | Java のインストール先ディレクトリ | 
| java.vm.specification.version | Java 仮想マシンの仕様バージョン | 
| java.vm.specification.vendor | Java 仮想マシンの仕様のベンダー | 
| java.vm.specification.name | Java 仮想マシンの仕様名 | 
| java.vm.version | Java 仮想マシンの実装バージョン | 
| java.vm.vendor | Java 仮想マシンの実装のベンダー | 
| java.vm.name | Java 仮想マシンの実装名 | 
| java.specification.version | Java Runtime Environment の仕様バージョン | 
| java.specification.vendor | Java Runtime Environment の仕様のベンダー | 
| java.specification.name | Java Runtime Environment の仕様名 | 
| java.class.version | Java クラスの形式のバージョン番号 | 
| java.class.path | Java クラスパス | 
| java.library.path | ライブラリのロード時に検索するパスのリスト | 
| java.io.tmpdir | デフォルト一時ファイルのパス | 
| java.compiler | 使用する JIT コンパイラの名前 | 
| java.ext.dirs | 拡張ディレクトリのパス | 
| os.name | オペレーティングシステム名 | 
| os.arch | オペレーティングシステムのアーキテクチャー | 
| os.version | オペレーティングシステムのバージョン | 
| file.separator | ファイル区切り文字 (UNIX では "/") | 
| path.separator | パス区切り文字 (UNIX では ":") | 
| line.separator | 行区切り文字 (UNIX では "\n") | 
| user.name | ユーザーのアカウント名 | 
| user.home | ユーザーのホームディレクトリ | 
| user.dir | ユーザーの現在の作業ディレクトリ | 
システムプロパティー値内の複数のパスは、プラットフォーム固有のパス区切り文字で区切られます。
セキュリティーマネージャーは、getProperties オペレーションを許可しない場合でも、getProperty(String) オペレーションを許可する場合があります。
SecurityException - セキュリティーマネージャーが存在し、セキュリティーマネージャーの checkPropertiesAccess メソッドがシステムプロパティーへのアクセスを許可しない場合。setProperties(java.util.Properties), SecurityException, SecurityManager.checkPropertiesAccess(), Propertiespublic static String lineSeparator()
line.separator の初期値) を返します。
その戻り値は、UNIX システムでは "\n"、Microsoft Windows システムでは "\r\n" になります。
public static void setProperties(Properties props)
Properties に設定します。
 
まず、セキュリティーマネージャーが存在する場合は、引数なしでその checkPropertiesAccess メソッドを呼び出します。これはセキュリティー例外となる場合があります。
 
引数が、getProperty(String) メソッドで使用されるシステムプロパティーの現在のセットになります。引数が null の場合、システムプロパティーの現在のセットはそのままです。
props - 新しいシステムプロパティー。SecurityException - セキュリティーマネージャーが存在し、セキュリティーマネージャーの checkPropertiesAccess メソッドがシステムプロパティーへのアクセスを許可しない場合。getProperties(), Properties, SecurityException, SecurityManager.checkPropertiesAccess()public static String getProperty(String key)
まず、セキュリティーマネージャーが存在する場合は、checkPropertyAccess メソッドがキーをその引数に指定して呼び出されます。その結果、SecurityException が発生することがあります。
 
システムプロパティーの現在のセットがない場合、システムプロパティーのセットをまず作成し、getProperties メソッドと同じ方法で初期化します。
key - システムプロパティーの名前。null。SecurityException - セキュリティーマネージャーが存在し、セキュリティーマネージャーの checkPropertyAccess メソッドが指定されたシステムプロパティーへのアクセスを許可しない場合。NullPointerException - key が null である場合。IllegalArgumentException - key が空である場合。setProperty(java.lang.String, java.lang.String), SecurityException, SecurityManager.checkPropertyAccess(java.lang.String), getProperties()public static String getProperty(String key, String def)
まず、セキュリティーマネージャーが存在する場合は、checkPropertyAccess メソッドが key をその引数に指定して呼び出されます。
 
システムプロパティーの現在のセットがない場合、システムプロパティーのセットをまず作成し、getProperties メソッドと同じ方法で初期化します。
key - システムプロパティーの名前。def - デフォルト値。SecurityException - セキュリティーマネージャーが存在し、セキュリティーマネージャーの checkPropertyAccess メソッドが指定されたシステムプロパティーへのアクセスを許可しない場合。NullPointerException - key が null である場合。IllegalArgumentException - key が空である場合。setProperty(java.lang.String, java.lang.String), SecurityManager.checkPropertyAccess(java.lang.String), getProperties()public static String setProperty(String key, String value)
まず、セキュリティーマネージャーが存在する場合は、その SecurityManager.checkPermission メソッドが PropertyPermission(key, "write") アクセス権で呼び出されます。この結果、SecurityException がスローされることがあります。例外がスローされなかった場合は、指定されたプロパティーが指定された値に設定されます。
 
key - システムプロパティーの名前。value - システムプロパティーの値。null。SecurityException - セキュリティーマネージャーが存在し、その checkPermission メソッドが、指定されたプロパティーの設定を許可しない場合。NullPointerException - key または value が null の場合。IllegalArgumentException - key が空である場合。getProperty(java.lang.String), getProperty(java.lang.String), getProperty(java.lang.String, java.lang.String), PropertyPermission, SecurityManager.checkPermission(java.security.Permission)public static String clearProperty(String key)
まず、セキュリティーマネージャーが存在する場合は、その SecurityManager.checkPermission メソッドが PropertyPermission(key, "write") アクセス権で呼び出されます。この結果、SecurityException がスローされることがあります。例外がスローされなかった場合は、指定されたプロパティーは削除されます。
 
key - 削除されるシステムプロパティーの名前。null。SecurityException - セキュリティーマネージャーが存在し、セキュリティーマネージャーの checkPropertyAccess メソッドが指定されたシステムプロパティーへのアクセスを許可しない場合。NullPointerException - key が null である場合。IllegalArgumentException - key が空である場合。getProperty(java.lang.String), setProperty(java.lang.String, java.lang.String), Properties, SecurityException, SecurityManager.checkPropertiesAccess()public static String getenv(String name)
セキュリティーマネージャーが存在する場合は、その checkPermission メソッドが RuntimePermission("getenv."+name)SecurityException がスローされる可能性があります。例外がスローされない場合、変数 name の値が返されます。
システムプロパティーと環境変数は、名前と値との間で概念的にマップされています。両方のメカニズムを使って、ユーザー定義情報を Java プロセスに渡すことができます。環境変数は、よりグローバルな効果を及ぼします。これは、プロセスにより定義されたすべての子孫にとって環境変数が直接の Java サブプロセスであるばかりでなく、可視であるからです。これらは、異なるオペレーティングシステム上で微妙に異なるセマンティクス (大文字と小文字を区別しないなど) を持つことができます。これらの理由から、環境変数は意図しない副作用を持つ可能性が高くなります。可能な場合は、システムプロパティーを使用することがもっとも適切です。環境変数は、グローバルな効果が必要なときや、外部システムインタフェースが環境変数 (PATH など) を必要とするときに使う必要があります。
UNIX システムでは、name のアルファベットの大文字と小文字は区別されますが、Microsoft Windows システムでは一般に区別されません。たとえば、Microsoft Windows では、式 System.getenv("FOO").equals(System.getenv("foo")) はおそらく true になります。
name - 環境変数の名前nullNullPointerException - name が null である場合SecurityException - セキュリティーマネージャーが存在し、その checkPermission メソッドが環境変数 name へのアクセスを許可しない場合getenv(), ProcessBuilder.environment()public static Map<String,String> getenv()
システムが環境変数をサポートしていない場合は、空のマップが返されます。
返されたマップは、null のキーや値を含みません。null のキーや値があるか照会すると、NullPointerException がスローされます。String 以外の型のキーや値が存在するかどうかのクエリーを試みると、ClassCastException がスローされます。
返されたマップとそのコレクションビューは、Object.equals(java.lang.Object) メソッドと Object.hashCode() メソッドの汎用規約に従わない可能性があります。
返されたマップは、一般にすべてのプラットフォームで大文字と小文字を区別します。
セキュリティーマネージャーが存在する場合は、その checkPermission メソッドが RuntimePermission("getenv.*")SecurityException がスローされる可能性があります。
Java サブプロセスに情報を渡す場合、一般的に環境変数よりもシステムプロパティーが推奨されます。
SecurityException - セキュリティーマネージャーが存在し、その checkPermission メソッドがプロセス環境へのアクセスを許可しない場合getenv(String), ProcessBuilder.environment()public static void exit(int status)
このメソッドは、クラス Runtime の exit メソッドを呼び出します。このメソッドは通常は復帰しません。
 
System.exit(n) の呼び出しの動作は、実際には次の呼び出しと同じです。
 
Runtime.getRuntime().exit(n)
status - 終了のステータス。SecurityException - セキュリティーマネージャーが存在し、その checkExit メソッドが、指定されたステータスでの終了を許可しない場合。Runtime.exit(int)public static void gc()
gc メソッドの呼び出しは、現在占有しているメモリーを再度迅速に利用するために、Java 仮想マシンが使用しないオブジェクトのリサイクルを実行することを意味します。メソッドの呼び出しから制御が戻るのは、Java 仮想マシンが、破棄されたオブジェクトが占有していたスペースを最大限まで回復し終えたときです。
 
System.gc() の呼び出しの動作は、実際には次の呼び出しと同じです。
 
Runtime.getRuntime().gc()
Runtime.gc()public static void runFinalization()
このメソッドを呼び出すと、Java 仮想マシンは、破棄されたにもかかわらず finalize メソッドが実行されていないオブジェクトの finalize メソッドを実行しようとします。メソッドの呼び出しから制御が戻るのは、Java 仮想マシンが、すべての未処理のファイナライズを最大限まで完了し終えたときです。
 
System.runFinalization() の呼び出しの動作は、実際には次の呼び出しと同じです。
 
Runtime.getRuntime().runFinalization()
@Deprecated public static void runFinalizersOnExit(boolean value)
セキュリティーマネージャーが存在する場合、終了が許可されるように、最初にその checkExit メソッドが 0 を引数に指定して呼び出されます。この結果、SecurityException がスローされることがあります。
value - ファイナライズを有効にするか無効にするかを示すSecurityException - セキュリティーマネージャーが存在し、その checkExit メソッドが終了を許可しない場合。Runtime.exit(int), Runtime.gc(), SecurityManager.checkExit(int)public static void load(String filename)
System.load(name) の呼び出しの動作は、実際には次の呼び出しと同じです。
 
Runtime.getRuntime().load(name)
filename - ロードするファイル。SecurityException - セキュリティーマネージャーが存在し、その checkLink メソッドが、指定されたダイナミックライブラリのロードを許可しない場合UnsatisfiedLinkError - ファイルが存在しない場合。NullPointerException - filename が null である場合Runtime.load(java.lang.String), SecurityManager.checkLink(java.lang.String)public static void loadLibrary(String libname)
libname によって指定されるシステムライブラリをロードします。ライブラリ名が実際のシステムライブラリにマッピングされる方法は、システムによって異なります。
 
System.loadLibrary(name) 呼び出しの動作は、実際には次の呼び出しと同じです
 
Runtime.getRuntime().loadLibrary(name)
libname - ライブラリの名前。SecurityException - セキュリティーマネージャーが存在し、その checkLink メソッドが、指定されたダイナミックライブラリのロードを許可しない場合UnsatisfiedLinkError - ライブラリが存在しない場合。NullPointerException - libname が null である場合Runtime.loadLibrary(java.lang.String), SecurityManager.checkLink(java.lang.String)public static String mapLibraryName(String libname)
libname - ライブラリの名前。NullPointerException - libname が null である場合loadLibrary(java.lang.String), ClassLoader.findLibrary(java.lang.String) バグまたは機能を送信 
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.