Java verstehen Klassenvariable System.out?

2 Antworten

D. h. für mich :
Es gibt eine Klasse Printstream und diese hat eine Klassenvariable System.

Nein.

Es gibt eine Klasse "System" und die hat eine Variable mit Namen "out", die vom Typ "PrintStream" ist.
(Übrigens wird die Klasse "PrintStream" im Camel-Case geschrieben, nicht "Printstream".)

Habe jetzt unter Java docs die Klasse System aufgerufen
Field Summary: Das sind die Attribute der Klasse System
hier finde ich auch das Attribut bzw. Field out
D. h. out ist static => gehört zu einer Klasse, hier zu System
final => Attribut out ist nicht veränderbar
Printstream => D. h. das Attribut out hat selbst den Datentyp Printstream
In der Klasse Printstream gibt es dann die Methode println(...)
Richtig soweit?

Ja.

Allerdings kann man iirc den Stream verändern, aber evtl. wird das auch intern umgebogen, sodass die Variable faktich nicht verändert wird (aber evtl. an einen anderen Stream weiterleitet).
EDIT: Okay, kann auch sein, dass die Intern einfach die Referenz umbiegen unter der Haube. Siehe: https://stackoverflow.com/questions/26903799/how-is-the-final-variable-system-out-changing-its-reference )

Es gibt eine Klasse Printstream und diese hat eine Klassenvariable System.

Das ist falsch.
PrintStream hat keine Klassenvariable „System“.

Der Rest stimmt.

Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf