Java: System.out.println()

  • Themenstarter Themenstarter Revenant
  • Beginndatum Beginndatum
R

Revenant

Guest
Hallo zusammen,

ich verstehe irgendwie nicht die Logik bzw. die Syntax, die hinter dieser Anweisung steckt... ?(

Mit System.out.println() kann man ja eine einfache Ausgabe vornehmen - soweit so klar.
System stellt nach meinem Wissen dabei die Klasse im Paket java.lang dar.
Mit Klasse.Methode kann man dann ja auf die Methoden der Klassen zugreifen bzw. mit Klasse.Klassenvariable eben auf die Klassenvariablen der Klasse.. Es handelt sich bei out doch um eine Klassenvariable (Schlüsselwort static in der Java API Dokumentation) oder?

Wenn es sich wirklich um eine Variable handelt, was bedeutet dann das .printlin() hinter der Variable? Ich mein man kann nicht auf eine Methode einer Variable zugreifen oder sowas?! Oder was ist mit out/println() sonst gemeint?


Ich hoffe mal ich hab mich einigermaßen verständlich ausgedrückt, is ne dumme Frage, aber ich werd aus meinem Buch hier einfach nicht schlau.


Gruß
Revenant
 
alos ich dachte .println ...ist die Methode, naja das ist eh klar :] ..System ist definitiv die Klasse!
...aber out? eine unterklasse?`ich weiss es ehrlich gesagt nicht, aber ich würde sowas auch in nem anderen Forum posten :D ..bzw IRC (wenn man die antwort innerhalb 3 min. braucht)
 
Original von Revenant
Wenn es sich wirklich um eine Variable handelt, was bedeutet dann das .printlin() hinter der Variable? Ich mein man kann nicht auf eine Methode einer Variable zugreifen oder sowas?!
doch wenn der typ der klassenvariable selbst eine klasse (und kein einfacher datentyp) ist. also:

java.lang.System ist die klasse
out ist in der System klasse eine klassenvariable vom typ der klasse java.io.PrintStream
println ist eine methode der klasse PrintStream

siehe auch java api link von BattleMaker
 
Gut! Jetzt bin ich schonmal schlauer, aber...

Bedeutet das dann, dass out ein Objekt der Klasse PrintStream ist (Typ der Klassenvariable = definierte Klasse)? Müsste ja eigentlich so sein!

Ausserdem ist die Schreibweise System.out.println irgendwie kompliziert und hätte aber den Vorteil, dass out static ist und man somit nicht noch erst eine Instanz der Klasse PrintStream erzeugen müsste... mh!

Theoretisch müsste man aber auch über eine Instanz von PrintStream auf dessen Methode println() zugreifen können oder? Ich weiss ist kompliziert und Programmierer sind schreibfaul und so, aber nur der Logik halber müsste das doch gehen.

Wenn ja, kann mir dann noch jemand verraten, wie ich die Instanz von PrintStream erzeugen kann? Folgender Code funktioniert bei mir nämlich nicht:
Code:
import java.io.*;

public class test {
    public static void main(){
	PrintStream schreiben = new PrintStream();
	schreiben.println("test");
    }
}

Danke schonmal für eure Gedult, ich will halt immer alles bis ins Details verstehen.


Gruß
Revenant
 
jain
System.out
ist nur nur irgenein printstream-objekt. Sondern das printstreamobjekt was mit der standartausgabe verbunden ist. (Verbunden über einen sogenannten outputstream)
einen printstream kannst du theoretisch so mit jeder beliebigen ausgabevariante verbinden (dateien, netzwerkstreams usw.).
...

printstream blub = System.out;
blub.println("lala");

...

sollte z.b. gehen :)
 
Zurück
Oben