Java system.out.println() Methode
-
Was ist die Methode
System.out.println()
? - Wie funktioniert System.out.println()?
-
Rolle von
toString()
in der Methodeprint()
- Zusammenfassung
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 Paketsjava.lang
und wird beim Start der JVM automatischinitialisiert
. Zur Initialisierung wird dieinitializeSystemClass()
verwendet. - Die Klasse
System
enthält eine Instanz der KlassePrintStream
. Diese Instanzvariable heißtout
. Sie wird mit den Modifikatorenpublic
,static
undfinal
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 Methodenprint()
undprintln()
. 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()
undprintln()
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 Methodeprintln()
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.