自己啓発マン  2021/01/24更新

System.out.printlnはどうやって作動してるのか


public class Main{
      	public static void main(String[] args) {
              System.out.println("hello world");
        }
}

最初にjavaを始めて書くコードをおそらく上記のものだろう
このコードを実行するとhehllo worldを出力される

ではこの中にあるSystem.out.printlnはなんなのか

出力をする記号とという認識からもうワンステップ理解を深めていきたい

System.out.printlnをよく見ると単語と単語を.で結んでいる

これはどこかで見たことがないだろうか・・・

そう、インスタンスの要素を呼び出すときに使うものと同じ流れである

つまりSystemクラスのoutメソッドのprintlnメソッドorフィールドを使っている?

半分正解である

一つ一つ要素を読み解いていこう

System

Systemは実はパッケージjava.langにあるSystemクラスを使用している

javaは自動的に幾つかのパッケージを持っているが上記コードではimport文は見られない

実は暗黙的に勝手にjava.langをimportしているのである

それでSystemクラスを使用することができる

Systemクラスの中身はよく分かんなかったので自分で確認してください


out

これはsystemクラスにあるフィールドを指している

Systemクラスの中身を見てみると下記文がある

public final static PrintStream out 

つまりoutはfinal修飾子のPrintStream型にあるstatic領域に保存するフィールドである


println

上記で出てきたPrintStreamはパッケージjava.ioにあるクラスである

このクラスにあるのがprintlnメソッドである

printlinメソッドはそれぞれの型が受け取れるように幾つかのメソッドがある

今回はString型”hello world"を受け取っているのでprintln(String)メソッドを使用している

    public void println(String x) {
        synchronized (this) {
            print(x);
            newLine();
        }
    }

println(String)メソッドは上記のようになっている

ここにnewLineメソッドやsynchronized(this)メソッドもあるがこれを追うとかぎりがないので今回は追わない

なのでSystem.out.printlnはSystemクラスにあるout変数、つまりPrintStreamクラスにあるprintln(String)メソッドに"hello world"を呼び出していることになる


タイトルとURLをコピーしました