Java system.out.println() Methode

Mohammad Irfan 12 Oktober 2023
  1. Was ist die Methode System.out.println()?
  2. Wie funktioniert System.out.println()?
  3. Rolle von toString() in der Methode print()
  4. Zusammenfassung
Java system.out.println() Methode

Dieses Tutorial stellt die Funktionsweise der Methode System.out.println() in Java vor und listet einige Beispielcodes auf, um das Thema zu verstehen.

System.out.print() ist eine sehr häufig verwendete Methode zum Drucken auf die Konsole oder die Standardausgabe. Diese Methode wird manchmal als Druckzeilenmethode bezeichnet. Zusätzlich zum Drucken auf die Konsole bewegt die Methode println() den Cursor in eine neue Zeile.

In diesem Tutorial werden wir versuchen, die interne Funktionsweise dieser Methode zu verstehen.

Was ist die Methode System.out.println()?

  • Das System.out.println() kann in drei Teile zerlegt werden.
  • Das System ist eine letzte Klasse des Pakets java.lang und wird beim Start der JVM automatisch initialisiert. Zur Initialisierung wird die initializeSystemClass() verwendet.
  • Die Klasse System enthält eine Instanz der Klasse PrintStream. Diese Instanzvariable heißt out. Sie wird mit den Modifikatoren public, static und final definiert.
class System {
  public static final PrintStream out;
  // More Code Below
}

Die Klasse PrintStream enthält die Methoden print() und println(). Diese Methoden sind überladen.

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

System.out liefert uns also die Instanzvariable out der Klasse PrintStream. Wir können dann die Methode print() oder println() für diese Instanzvariable aufrufen.

Wie funktioniert System.out.println()?

  • Die Klasse PrintStream enthält mehrere überladene Methoden print() und println(). Sie unterscheiden sich in der Art der akzeptierten Parameter.
  • Der Rückgabetyp von allen ist ungültig.
  • Für alle primitiven Typen existiert eine überladene Methode.
  • Es enthält auch eine überladene Methode zum Drucken von Strings und eine weitere für Objekte.

Der folgende Code demonstriert die Funktionsweise der überladenen println()-Methoden.

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
  }
}

Ausgabe:

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

An die Methode println() übergebene Argumente

  • Ein Anfänger mag denken, dass die Methoden print() und println() eine variable Anzahl von Argumenten annehmen (varargs), aber das ist nicht der Fall.
  • Im folgenden Code versuchen wir beispielsweise, eine Ganzzahl, eine Zeichenkette und ein Zeichen zu drucken.
public class PrintDemo {
  public static void main(String args[]) {
    int i = 10;
    String s = "hello";
    char c = 'O';
    System.out.println(i + s + c);
  }
}

Ausgabe:

10helloO
  • Aber wir übergeben nicht drei verschiedene Argumente. Ein Komma trennt die Argumente einer Methode.
  • Stattdessen werden sie mit dem Operator + in der Methode println() miteinander verkettet.
  • Der Operator +, der mit einem String verwendet wird, führt zur Verkettung von Strings und gibt einen String zurück.
  • Im obigen Code wird zuerst der Integer mit dem String verkettet und der resultierende String wird erneut mit der char-Variablen verkettet.

Beachten Sie auch, dass das an die Methode übergebene Argument von links nach rechts ausgewertet wird. Wenn also die ersten beiden übergebenen Variablen Ganzzahlen sind, findet eine normale arithmetische Addition statt, und das Ergebnis der Addition wird mit dem String verkettet.

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

Ausgabe:

20hello

Aber String-Verkettung findet statt, wenn zwei weitere Ganzzahlen nach dem String vorhanden sind.

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

Ausgabe:

20hello11

Wir können die unten gezeigte Regel von links nach rechts anwenden, um die Ausgabe zu berechnen. Sind keine Strings vorhanden, erfolgt die normale arithmetische Addition.

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

Rolle von toString() in der Methode print()

Die Methoden print() und println() rufen implizit die Methode toString() für das Argument auf. Es wandelt das Argument in einen String um. Dies ist sehr nützlich, wenn wir benutzerdefinierte Klasseninstanzen auf eine bestimmte Weise drucken möchten.

Wir können die Methode toString() in unserer Klasse überschreiben, um unser Objekt in verschiedenen Formaten zu drucken. Das folgende Beispiel zeigt dies.

Beispiel: Ohne die Methode toString() zu überschreiben.

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);
  }
}

Ausgabe:

Demo@433c675d

Beispiel: Nach dem Überschreiben der Methode 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);
  }
}

Ausgabe:

f1 f2

Zusammenfassung

Die Methoden print() und println() sind Teil der Klasse PrintStream. Der Zugriff erfolgt über die Instanzvariable System.out. Diese Methoden sind überladen, um mit verschiedenen Argumenttypen umzugehen. Denken Sie daran, dass diese Methoden keine variable Anzahl von Argumenten annehmen. In diesem Tutorial haben wir gelernt, wie die Methoden System.out.print() und System.out.println() funktionieren.

Verwandter Artikel - Java Print