Java api入門チュートリアルのJAVAのSYSTEMクラス
3330 ワード
Systemクラスはシステムを表し、システムレベルの多くの属性と制御方法がクラスの内部に配置されています.このクラスはjavaにある.langバッグ.
クラスの構築方法はprivateなので、クラスのオブジェクトを作成できません.つまり、クラスをインスタンス化できません.内部のメンバー変数もメンバーメソッドもstaticなので、呼び出しも便利です.
1、メンバー変数
Systemクラスには、標準入力ストリーム(キーボード入力)、標準出力ストリーム(ディスプレイ)、標準エラー出力ストリーム(ディスプレイ)の3つのメンバー変数が含まれています.
例:
System.out.println(“Test”);
この行コードの役割は、文字列「Test」をシステムの標準出力装置、すなわち画面に表示することである.
その後、IOに関する知識を学習した後、Systemクラスのメンバメソッドを用いて標準入力ストリームなどの対応するデバイスを変更することができ、例えば標準出力ストリームから出力された情報をファイル内部に出力してログファイルなどを形成することができる.
2、メンバーメソッド
Systemクラスには、以下のようなシステムレベルの操作方法があります.
a、arraycopy方法
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
この方法の役割は、配列コピー、すなわち、1つの配列の内容を別の配列の指定された位置にコピーすることであり、native方法であるため、ループを使用するよりも性能的に効率的である.
使用例:
このコードの役割は、配列aにおいて、下付き文字1から、配列bが下付き文字3から始まる位置にコピーされ、合計2つコピーされることである.すなわち、a[1]をb[3]にコピーし、a[2]をb[4]にコピーすることで、コピー後の配列aの値は変化せず、配列bの値は{0,0,0,2,3}となる.
b、currentTimeMillis方法
public static long currentTimeMillis()
この方法の役割は、現在のコンピュータ時間を返すことであり、時間の表現形式は、現在のコンピュータ時間とGMT時間(グリニッジ時間)1970年1月1日0時0分0秒の差のミリ秒数である.
例:
得られるのは、差分値で表される現在の時間である長い整数の数字です.この方法で得られた時間は直感的ではないが,時間の計算に便利である.
たとえば、計算プログラムの実行に要する時間は、次のコードを使用できます.
ここで変数timeの値は,このコードの中間のforサイクル実行に必要なミリ秒数を表し,この方式を用いて異なるアルゴリズムのプログラムの実行効率の高低をテストしたり,後期スレッド制御時の正確な遅延実現に用いたりすることができる.
c、exit方法
public static void exit(int status)
この方法の役割はプログラムを終了することである.ここでstatusの値が0の場合は正常終了、非ゼロの場合は異常終了を表します.この方法を用いると,グラフィックインタフェースプログラミングにおいてプログラムの終了機能などを実現できる.
d、gc方法
public static void gc()
この方法の役割は,システムにごみ回収を要求することである.システムが直ちに回収されるかどうかは、システム内のゴミ回収アルゴリズムの実現およびシステム実行時の状況に依存する.
e、getPropertyメソッド
public static String getProperty(String key)
この方法の役割は,システムにおける属性名keyの属性に対応する値を得ることである.システムでよく見られる属性名および属性の役割を次の表に示します.
属性名リスト
属性名
属性の説明
Javaランタイム環境バージョン
Javaインストールディレクトリ
OSの名前
OSのバージョン
ユーザーのアカウント名
ユーザーのホーム
ユーザーの現在の作業ディレクトリ
例:
この方法を用いて,多くのシステムレベルのパラメータと対応する値を得ることができる.
具体的には、この記事を参照してください.
JavaのRuntimeでgetRuntime()とSystem.getProperties()はシステムの情報を取得します
クラスの構築方法はprivateなので、クラスのオブジェクトを作成できません.つまり、クラスをインスタンス化できません.内部のメンバー変数もメンバーメソッドもstaticなので、呼び出しも便利です.
1、メンバー変数
Systemクラスには、標準入力ストリーム(キーボード入力)、標準出力ストリーム(ディスプレイ)、標準エラー出力ストリーム(ディスプレイ)の3つのメンバー変数が含まれています.
例:
System.out.println(“Test”);
この行コードの役割は、文字列「Test」をシステムの標準出力装置、すなわち画面に表示することである.
その後、IOに関する知識を学習した後、Systemクラスのメンバメソッドを用いて標準入力ストリームなどの対応するデバイスを変更することができ、例えば標準出力ストリームから出力された情報をファイル内部に出力してログファイルなどを形成することができる.
2、メンバーメソッド
Systemクラスには、以下のようなシステムレベルの操作方法があります.
a、arraycopy方法
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
この方法の役割は、配列コピー、すなわち、1つの配列の内容を別の配列の指定された位置にコピーすることであり、native方法であるため、ループを使用するよりも性能的に効率的である.
使用例:
int[] a = {1,2,3,4};
int[] b = new int[5];
System.arraycopy(a,1,b,3,2);
このコードの役割は、配列aにおいて、下付き文字1から、配列bが下付き文字3から始まる位置にコピーされ、合計2つコピーされることである.すなわち、a[1]をb[3]にコピーし、a[2]をb[4]にコピーすることで、コピー後の配列aの値は変化せず、配列bの値は{0,0,0,2,3}となる.
b、currentTimeMillis方法
public static long currentTimeMillis()
この方法の役割は、現在のコンピュータ時間を返すことであり、時間の表現形式は、現在のコンピュータ時間とGMT時間(グリニッジ時間)1970年1月1日0時0分0秒の差のミリ秒数である.
例:
long l = System. currentTimeMillis();
得られるのは、差分値で表される現在の時間である長い整数の数字です.この方法で得られた時間は直感的ではないが,時間の計算に便利である.
たとえば、計算プログラムの実行に要する時間は、次のコードを使用できます.
long start = System. currentTimeMillis();
for(int i = 0;i < 100000000;i++){
int a = 0;
}
long end = System. currentTimeMillis();
long time = end-start;
System.out.println(time);
ここで変数timeの値は,このコードの中間のforサイクル実行に必要なミリ秒数を表し,この方式を用いて異なるアルゴリズムのプログラムの実行効率の高低をテストしたり,後期スレッド制御時の正確な遅延実現に用いたりすることができる.
c、exit方法
public static void exit(int status)
この方法の役割はプログラムを終了することである.ここでstatusの値が0の場合は正常終了、非ゼロの場合は異常終了を表します.この方法を用いると,グラフィックインタフェースプログラミングにおいてプログラムの終了機能などを実現できる.
d、gc方法
public static void gc()
この方法の役割は,システムにごみ回収を要求することである.システムが直ちに回収されるかどうかは、システム内のゴミ回収アルゴリズムの実現およびシステム実行時の状況に依存する.
e、getPropertyメソッド
public static String getProperty(String key)
この方法の役割は,システムにおける属性名keyの属性に対応する値を得ることである.システムでよく見られる属性名および属性の役割を次の表に示します.
属性名リスト
属性名
属性の説明
java.version
Javaランタイム環境バージョン
java.home
Javaインストールディレクトリ
os.name
OSの名前
os.version
OSのバージョン
user.name
ユーザーのアカウント名
user.home
ユーザーのホーム
user.dir
ユーザーの現在の作業ディレクトリ
例:
String osName = System.getProperty("os.name");
String user = System.getProperty("user.name");
System.out.println(" :" + osName);
System.out.println(" :" + user);
この方法を用いて,多くのシステムレベルのパラメータと対応する値を得ることができる.
具体的には、この記事を参照してください.
JavaのRuntimeでgetRuntime()とSystem.getProperties()はシステムの情報を取得します