Java system.out.println()メソッド

Mohammad Irfan 2023年10月12日
  1. System.out.println() メソッドとは何ですか
  2. System.out.println() はどのように機能するか
  3. print() メソッドでの toString() の役割
  4. まとめ
Java system.out.println()メソッド

このチュートリアルでは、System.out.println() メソッドが Java でどのように機能するかを紹介し、トピックを理解するためのサンプルコードをいくつか示します。

System.out.print() は、コンソールまたは標準出力に出力するために非常に頻繁に使用されるメソッドです。この方法は、出力行法と呼ばれることもあります。コンソールへの出力に加えて、println() メソッドはカーソルを新しい行に移動します。

このチュートリアルでは、このメソッドの内部動作を理解しようとします。

System.out.println() メソッドとは何ですか

  • System.out.println() は 3つの部分に分けることができます。
  • システムjava.lang パッケージの最終クラスであり、JVM の起動時に自動的に初期化されます。initializeSystemClass() はそれを初期化するために使用されます。
  • System クラスには、PrintStream クラスのインスタンスが含まれています。このインスタンス変数は out と呼ばれます。これは、修飾子 publicstatic、および final で定義されます。
class System {
  public static final PrintStream out;
  // More Code Below
}

PrintStream クラスには、print() メソッドと println() メソッドが含まれています。これらのメソッドはオーバーロードされています。

class PrintStream {
  public void print(argument) {
    // implementation
  }
  public void println() {
    // implementation
  }
  // Overloaded print() and println() methods below
}

したがって、System.outPrintStream クラスの out インスタンス変数を提供します。次に、このインスタンス変数で print() または println() メソッドを呼び出すことができます。

System.out.println() はどのように機能するか

  • PrintStream クラスには、オーバーロードされた複数の print() および println() メソッドが含まれています。受け入れられるパラメータのタイプが異なります。
  • それらすべての返品タイプは無効です。
  • すべてのプリミティブ型にオーバーロードされたメソッドが存在します。
  • 文字列を出力するためのオーバーロードされたメソッドと、オブジェクト用の別のメソッドも含まれています。

以下のコードは、オーバーロードされた println() メソッドの動作を示しています。

public class PrintDemo {
  public static void main(String args[]) {
    int i = 10;
    short s = 10;
    long l = 10;
    char c = 'A';
    char[] charArr = {'A', 'B', 'C'};
    boolean bool = true;
    double d = 10.0;
    float f = 10.0f;
    String str = "hello";
    Object o = new Object();

    System.out.println(); // terminate the current line
    System.out.println(i); // print integer
    System.out.println(s); // print short
    System.out.println(l); // print long
    System.out.println(c); // print char
    System.out.println(charArr); // print char array
    System.out.println(bool); // print boolean
    System.out.println(d); // print double
    System.out.println(f); // print float
    System.out.println(str); // print String
    System.out.println(o); // print Object
  }
}

出力:

10
10
10
A
ABC
true
10.0
10.0
hello
java.lang.Object@433c675d

println() メソッドに渡される引数

  • 初心者は、print() メソッドと println() メソッドが可変数の引数(varargs)を取ると思うかもしれませんが、そうではありません。
  • たとえば、以下のコードでは、整数、文字列、および文字を出力しようとしています。
public class PrintDemo {
  public static void main(String args[]) {
    int i = 10;
    String s = "hello";
    char c = 'O';
    System.out.println(i + s + c);
  }
}

出力:

10helloO
  • しかし、私たちは 3つの異なる議論を渡していません。メソッドの引数はコンマで区切ります。
  • 代わりに、println() メソッドの+ 演算子を使用して連結されます。
  • 文字列で使用される+ 演算子は、文字列の連結につながり、文字列を返します。
  • 上記のコードでは、整数は最初に文字列と連結され、結果の文字列は再び char 変数と連結されます。

もう 1つの注意点は、メソッドに渡される引数が左から右に評価されることです。したがって、渡される最初の 2つの変数が整数の場合、通常の算術加算が行われ、加算の結果が文字列と連結されます。

public class PrintDemo {
  public static void main(String args[]) {
    System.out.println(10 + 10 + "hello"); // first integer addition and then string concatenation
  }
}

出力:

20hello

ただし、文字列の後にさらに 2つの整数が存在する場合、文字列の連結が行われます。

public class PrintDemo {
  public static void main(String args[]) {
    System.out.println(10 + 10 + "hello" + 1 + 1); // 20hello11 not 20hello2
  }
}

出力:

20hello11

以下に示すルールを左から右に適用して、出力を計算できます。文字列が存在しない場合、通常の算術加算が行われます。

(any data type + string) = (string + any data type) = (concatenated string)

print() および println() メソッドは、引数に対して toString() メソッドを暗黙的に呼び出します。引数を文字列に変換します。これは、ユーザー定義のクラスインスタンスを特定の方法で出力する場合に非常に便利です。

クラスの toString() メソッドをオーバーライドして、オブジェクトをさまざまな形式で出力できます。次の例はこれを示しています。

例:toString()メソッドをオーバーライドしない。

class Demo {
  String field1;
  String field2;

  Demo(String f1, String f2) {
    this.field1 = f1;
    this.field2 = f2;
  }
}
public class PrintDemo {
  public static void main(String args[]) {
    Demo d = new Demo("f1", "f2");
    System.out.print(d);
  }
}

出力:

Demo@433c675d

例:toString() メソッドをオーバーライドした後。

class Demo {
  String field1;
  String field2;
  Demo(String f1, String f2) {
    this.field1 = f1;
    this.field2 = f2;
  }
  @Override
  public String toString() {
    return field1 + " " + field2;
  }
}
public class PrintDemo {
  public static void main(String args[]) {
    Demo d = new Demo("f1", "f2");
    System.out.print(d);
  }
}

出力:

f1 f2

まとめ

print() および println() メソッドは、PrintStream クラスの一部です。これらには、System.out インスタンス変数を使用してアクセスします。これらのメソッドは、さまざまな引数タイプを処理するためにオーバーロードされています。これらのメソッドは可変数の引数をとらないことに注意してください。このチュートリアルでは、System.out.print() メソッドと System.out.println() メソッドがどのように機能するかを学びました。

関連記事 - Java Print