Java Doc 読解 System

イントロダクション

「System.out.println()」で使用するクラス、SystemクラスのJavaDocを読んでみます。

Systemクラスの特徴

Systemクラスは、staticメソッドばかりが定義されているので、System.XXX()と使用することが多いです。
このクラスのJavaDocを見てみるといろいろと発見があると思うので、これを勧めたいというわけです。

Systemクラス

java.lang.Systemクラス(JDK ver1.8)のJavaDoc 読解です。とはいっても、一部の使えそうなメソッドを読んでその意味を記載したものになります。

<よく使用するコード>

System.out.println("何かしらの文字列");
// Javaを起動しているシステム(OS)の改行コードを取得する
String SEP = System.lineSeparator();

使い方

基本的に「new」しないで使用します。コードでは、System.メソッド名(フィールド名)の様に使用します。
このようなメソッドの呼び出し肩を静的呼び出し(static呼び出し)と筆者は読んでます。一般的でないかもしれません。。。

static呼び出し

次のような感じです、System.out.println("XXX");

この処理の内訳を解説すると次のようになります。

Systemクラスの中にある、staticフィールド変数、out(PrintStream型)のメソッドprintln()を呼び出している

フィールド変数が直接呼び出せるのは「public」かつ「sattic」になっているからです。
具体的には下のようなコードです。

public class Sample {
    /** スタティックフィールド変数 */
    public static String publicStr = "Moring!";
    private static String privateStr = "Hello";

    public static void main(String[] args) {
        // エラーなし
        System.out.println(Sample.publicStr);
        // エラーあり、privateは外部から呼び出せない
        System.out.println(Sample.privateStr); 
    }
}

実行サンプルコードはこちらです。

それぞれ
out: 標準出力を表す「PrintStramクラス」 ※InputStreamをラップしたクラスです。
err: 「out」と同様に、「標準」エラー出力
in: 標準入力

例:

初めのプログラム「ハローワールド」では「標準出力」を使用しました。

毎度おなじみ標準出力(コンソール出力)「System.out」

System.out.println("文字列を記述");

Systemクラスのフィールド「out」を呼び出しさらに「println」メソッドを呼びます。これは改行が含まれます。

System.out.print("文字列を記述");

printlnとprintの違いです。ただしprintは、改行が含まれません。

標準入力「in」

使い方の例を示します。

一番レベルが低い状態(他のクラスでラップしない)
byte[] input = new byte[3]; // 3文字の入力を受け付ける(全角は1文字)

System.in.real(input, 0, 2); // 3文字文の領域しか用意していない

【メソッド読解】
このクラスでは全てのメソッドが「static」メソッドです。
equalsなどは「Object」(親)クラスのメソッドですので通常の、インスタンスメソッドです。

  1. arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
    src: コピー元の配列を設定する
    srcPos; コピーを開始する位置を指定
    dest: コピー先の配列
    destPos: コピー先配列の開始位置
    length: コピーする数
  2. 以下は、システム・レベルで扱うプロパティなのでいじらない方が良いかも?
    clearProperty(String key)
    setProperty(String key, String value)
  3. その他、よく使うのものをピックアップしました。
    exit(int status): 起動しているJavaアプリケーションを終了します。
    ※この処理が走ると強制的に終了します。
    gc(): ガベージコレクション(もう使用していないオブジェクト)を解放します。
    ※メモリの解放を行います。細かいことは後々。。。
    そして、下のコードと同じ意味です。

    Runtime.getRuntime().gc()
  4. getenv():環境変数などの値が入っているMapが返されます。

標準入力〜標準出力を行ったプログラム=テキストRPG(戦闘シーンのみ)を作成しましので、画像を見ると、イメージがつきやすいと思います。


関連ページ一覧

Eclipse セットアップ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseCDTをインストール〜
  3. Setup OpenGL with JavaJOGLを使う準備 for Eclipse
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)
  6. Eclipse SceneBuilderを追加する
  7. JavaFX SceneBuilder EclipseSceneBuilder連携~

Java Basic一覧

  1. Java Basic Level 1 〜Hello Java〜
  2. Java Basic Level2 〜Arithmetic Calculate〜
  3. Java Basic Level3 〜About String class〜
  4. Java Basic Level 4〜Boolean〜
  5. Java Basic Level 5〜If Statement〜
  6. Java Basic Summary from Level1 to 5
  7. Java Basic Level 6 〜Traning of If statement〜
  8. Java Basic Level8 〜How to use for statement〜
  9. Java Basic Level 8.5 〜Array〜
  10. Java Basic Level 9〜Training of for statement〜
  11. Java Basic Level 10 〜While statement 〜
  12. Java Basic Swing〜オブジェクト指向〜
  13. Java Basic Swing Level 2〜オブジェクト指向2〜
  14. サンプル実装〜コンソールゲーム〜
  15. Java Basic インターフェース・抽象クラスの作り方
  16. Java Basic クラスとは〜Step2_1〜
  17. Java Basic JUnit 〜テストスイートの作り方〜

Git関連

  1. Java Git clone in Eclipse 〜サンプルの取得〜
  2. Eclipse Gitリポジトリの取得 GitからソースをPullしよう〜
  3. IntelliJ IDEA GitGitリポジトリからクローン〜

JavaFX関連ページ

  1. Eclipse SceneBuilderを追加する
  2. JavaFX SceneBuilder 〜EclipseとSceneBuilder連携~
  3. JavaFX SceneBuilder〜ボタンにメソッドを割り当てるワンポイント〜
  4. Java プロコンゲーム 〜見た目の作成(SceneBuilderの使用)〜

ステップアップ関連ページ一覧

  1. Java 初めてでも大丈夫〜ステップアッププログラミングのススメ〜
  2. ステップアッププログラミング〜Java FxでHelloWorld解説〜
  3. Java StepUpPrograming〜JavaFX で四則計算〜
  4. Java StepUpPrograming〜JavaFXで画面切り替えを作る1〜
  5. Java StepUpPrograming〜JavaFXで画面切り替え2ボタン作成〜
  6. Java StepUpPrograming〜JavaFXで画面切り替え3アクション〜
  7. Java StepUpPrograming〜JavaFXで画面切り替え4Pane切り替え〜
  8. Java StepUpPrograming〜JavaFXで画面切り替え5WebEngine

JavaFX + ND4Jで機械学習準備

  1. JavaFX + ND4J〜数学への挑戦1:ND4Jのインストール〜
  2. JavaFX + ND4J〜数学への挑戦2: 行列の計算〜
  3. Java + ND4J 〜数学への挑戦3: ベクトル(配列)の作成方法〜

オブジェクト指向関連ページ

  1. [オブジェクト指向の概念1〜OracleDocのチュートリアル1〜](https://zenryokuservice.com/wp/2019/10/301. /%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e6%8c%87%e5%90%91%e3%81%ae%e6%a6%82%e5%bf%b5-%e3%80%9coracledoc%e3%81%ae%e3%83%81%e3%83%a5%e3%83%bc%e3%83%88%e3%83%aa%e3%82%a2%e3%83%ab%ef%bc%91/)
  2. オブジェクト指向の概念2〜クラスとは〜

投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す