web-dev-qa-db-de.com

Was bedeutet "System.out.println" in Java?

Befindet sich diese statische println -Funktion in der out -Klasse aus dem System -Namensraum?

 Namespace System {
 klassifizieren {
 statische Drucke ... 
} 

Wie kann ich diesen Namen interpretieren? Und wo in JRE ist diese Funktion definiert? Im Java.lang.System/Java.lang.Object?

58
prosseek

Nein. Tatsächlich ist out ein statisches Element in der Klasse System (nicht wie in .NET) und eine Instanz von PrintStream. Und println ist eine normale (überladene) Methode der Klasse PrintStream.

Siehe http://download.Oracle.com/javase/6/docs/api/Java/lang/System.html#out .

Wenn out/err/in Klassen wären, würden sie mit Großbuchstaben (Out/Err/In) aufgrund der Namenskonvention (Grammatik ignorieren).

85
kennytm

System ist eine Klasse mit einem öffentlichen statischen Feld out. Also ist es eher so

class System 
{
    public static PrintStream out;
}

class PrintStream
{
    public void println ...
}

Dies ist eine leichte Vereinfachung, da die Klasse PrintStream tatsächlich im Paket Java.io Enthalten ist, aber es ist gut genug, um die Beziehung von Dingen zu zeigen.

48
cHao

Überprüfen Sie folgenden Link:

http://download.Oracle.com/javase/1.5.0/docs/api/Java/lang/System.html

Sie werden deutlich sehen, dass:

System ist eine Klasse in der Java.lang Paket.

out ist ein statisches Element der Klasse System und eine Instanz von Java.io.PrintStream.

println ist eine Methode von Java.io.PrintStream. Diese Methode ist überladen, um eine Nachricht an das Ausgabeziel zu drucken, bei dem es sich normalerweise um eine Konsole oder eine Datei handelt.

26
YoK

System.out.println ()

Hochrangiges Verständnis

Um dies zu verstehen, müssen wir uns an einige Grundlagen von Java erinnern:

  • punktoperator (.) in Java: In Java. (Punktoperator) wird nur zum Aufrufen von Methoden oder Variablen verwendet. Wir können also sagen, dass es sich entweder um eine Methode oder eine Variable handelt.
  • Methoden in Java: Wir wissen, dass Methoden nach dem Methodennamen immer in Klammern '()' stehen. Daher kann out in Java keine Methode sein. Also out ist eine Variable und println () ist eine Methode.
  • Klassenname in Java: Der Klassenname sollte idealerweise in Java mit einem Großbuchstaben beginnen System ist also eine Klasse.

Jetzt mit Grundkenntnissen von Java wissen wir:

  • System ist eine Klasse
  • out ist eine Variable
  • println () ist eine Methode

Näheres dazu:

out variable: statisch oder instanz?

  • wird mit dem Klassennamen aufgerufen, daher kennen wir die statische Variable der Systemklasse.

  • der Aufruf einer println () -Methode ist jedoch ein Objekt des Referenztyps PrintStream.

die System-Klasse gehört zum Java.lang-Paket

class System {
  public static final PrintStream out;
  //...
}

die Prinstream-Klasse gehört zum Java.io-Paket

class PrintStream{
public void println();
//...
}
26
VdeX

println und print sind die beiden überladenen Methoden, die zur Klasse PrintStream gehören.

Um darauf zugreifen zu können, benötigen wir eine Instanz dieser Klasse.

Eine statische Eigenschaft mit dem Namen out vom Typ PrintStream wird am System erstellt. Klasse.

Um auf die obigen Methoden zuzugreifen, verwenden wir daher die folgenden Anweisungen:

System.out.println("foo");
System.out.print("foo");
7
Omprakash.K
System.out.println("Hello World");
  1. System: Dies ist der Name der Standardklasse, die Objekte enthält, die den Standard kapseln I/O Geräte Ihres Systems.

Es ist in der. Enthalten paket Java.lang. Da das Java.lang - Paket daher standardmäßig in jedes Java) - Programm importiert wird Paket Java.lang ist das einzige Paket in der Java API, für das keine Importdeklaration erforderlich ist.

  1. out:Das Objekt out repräsentiert den Ausgabestream (d. H. Das Befehlsfenster) und ist das statische Datenelement der Klasse System.

Also hier notieren System.out (System -Class & out- statisches Objekt, dh warum es einfach mit Klassennamen bezeichnet wird und wir kein Objekt erstellen müssen ).

  1. println:Die println() ist methode of out -Objekt, das die Textzeichenfolge als Argument verwendet und der Standardausgabe anzeigt, d. h auf dem Bildschirm.

Hinweis
System -Klasse
out -statisches Objekt
println() -Methode
Denken Sie daran, dass eine Funktion (in Java Funktion heißt Methode) immer das Format hat funktion()

4

System ist eine Klasse im Paket Java.lang

out ist ein static Objekt der Klasse PrintStream im Paket Java.io

println() ist eine Methode in der Klasse PrintStream

2
being_j

System ist eine Klasse des Pakets Java.lang, out ist ein Objekt der Klasse PrintStream und auch ein Datenelement static von System class, print() und println() ist eine Instanzmethode der Klasse PrintStream. Es ist eine weiche Ausgabe auf der Konsole.

2
Dushyant

System ist eine Klasse in Java.lang package. Und out ist ein PrintStream Objekt. Nette Erklärung @ http://lazy-geeks.blogspot.in/2015/01/what-is-systemoutprintln.html

1
pavan
System.out.println();

System ist die Klasse

out ist eine Variable in der Klasse System und es ist ein static und Variablentyp ist PrintStream .

Hier ist die Variable out in der Klasse System:

public final static PrintStream out = null;

Sie können die Implementierung von System hier sehen.

println() ist eine überladene Methode in der Klasse PrintStream.

PrintStream enthält drei überladene Druckmethoden:

  1. print()
  2. println()
  3. printf()

Sie können Implementierung von PrintStream hier sehen .

Sie können die Klasse System nicht instanziieren und sie ist die untergeordnete Klasse von Object und die Object ist der Vater (die Oberklasse) aller Klassen, einschließlich der von Ihnen definierten Klassen.

In den Oracle-Dokumenten heißt es:

public final class System extends Object

Die Klasse System enthält mehrere nützliche Klassenfelder und Methoden. Es kann nicht instanziiert werden.

Zu den von der Klasse System bereitgestellten Funktionen gehören Standardeingabe-, Standardausgabe- und Fehlerausgabestreams. Zugriff auf extern definierte Eigenschaften und Umgebungsvariablen; ein Mittel zum Laden von Dateien und Bibliotheken; und ein Hilfsprogramm zum schnellen Kopieren eines Teils eines Arrays.

Seit: JDK1.0

Wenn Sie nicht wissen was mit instanziieren gemeint ist, lesen Sie diesen Fragebogen . Es ist eine C # -Frage, aber das Konzept ist dasselbe.

Auch Was ist der Unterschied zwischen einer Instanz und einem Objekt?

Wenn Sie nicht wissen was mit Überlastung gemeint ist, lesen Sie diese Frage .

1
Blasanka

Da out mit dem Klassennamen System aufgerufen wird und nicht mit einer Instanz einer Klasse (eines Objekts), muss out eine statische Variable sein, die zur Klasse System gehört. . out muss eine Instanz einer Klasse sein, da sie die Methode println() aufruft.

// the System class belongs to Java.lang package
class System {
    public static final PrintStream out;
}
class PrintStream {
    public void println();
}
1
user1527047

Es ist recht einfach, die Frage zu verstehen, aber um sie zu beantworten, müssen wir uns eingehender mit dem nativen Code Java befassen.

  • System ist eine statische Klasse und kann nicht instanziiert werden
  • out ist eine Referenzvariable, die in System definiert ist.
  • println() ist die Methode zum Drucken auf der Standardausgabe.

Ein kurze und nette Erklärung ist immer willkommen, da wir aus dieser einzigen Aussage viel lernen können!

1
Shyam

System: ist eine vordefinierte Klasse von Java.lang Paket.

out: ist ein static Mitglied der printStream Klasse und verbindet sich mit der Konsole.

Println: ist eine Methode der Klasse printstream und keine static.

0
user3819423

System ist eine Klasse im Paket Java.lang.

out ist das statische Datenelement in der Klasse System und der Referenzvariablen der Klasse PrintStream.

Println() ist eine normale (überladene) Methode der Klasse PrintStream.

0
mohd zeeshan

Aus dem Javadoc über System, hier ist, was der Doc sagt:

public final class System
extends Object

The System class contains several useful class fields and methods. It cannot be instantiated.
Among the facilities provided by the System class are standard input, standard output, and error output streams; access to externally defined properties and environment variables; a means of loading files and libraries; and a utility method for quickly copying a portion of an array.

Since:
JDK1.0

Bezüglich System.out

public static final PrintStream out

The "standard" output stream class Prinstream  belongs to Java.io package. This stream is already open and ready to accept output data. 
When the JVM is initialized, the method initializeSystemClass() is called that does exactly what it’s name says – it initializes the System class and sets the out variable. The initializeSystemClass() method actually calls another method to set the out variable – this method is called setOut().
Typically this stream corresponds to display output or another output destination specified by the Host environment or user.

In Bezug auf println ();

class PrintStream{
public void println();
}

Für einfache eigenständige Java) Anwendungen ist eine typische Methode zum Schreiben einer Zeile mit Ausgabedaten:

System.out.println(data);
0

System.out.println ("...") in Java Code wird in JVM übersetzt. Durch einen Blick in die JVM konnte ich besser verstehen, was sich hinter der Motorhaube abspielt.

Aus dem Buch Programmieren von der Java Virtual Machine . Dieser Code wird kopiert von https://github.com/ymasory/programming-for-the -jvm/blob/master/examples/HelloWorld.j .

Dies ist der JVM-Quellcode.

.class public HelloWorld
.super Java/lang/Object

.method public static main([Ljava/lang/String;)V
.limit stack 2
.limit locals 1
  getstatic Java/lang/System/out Ljava/io/PrintStream;
  ldc "Hello, world"
  invokevirtual Java/io/PrintStream/println
    (Ljava/lang/String;)V
  return

.end method
.end class

Da "Die JVM keinen Zugriff auf den Speicher auf Byte-Ebene zulässt" das Objekt out vom Typ L Java/io/PrintSteram; wird mit dem Befehl getstatic JVM in einem Stapel gespeichert. Anschließend wird das Argument auf den Stapel verschoben, bevor eine Methode println der Klasse Java/io/PrintStream Aus einer Instanz mit dem Namen out aufgerufen wird. Der Parameter der Methode ist (L Java/lang/String;) Und der Ausgabetyp ist ungültig (V).

0
prosseek
System.out.println

System ist eine Klasse in der Java.lang Paket.

out ist ein static Datenelement der System Klasse und verweist auf eine Variable der PrintStream Klasse.

0
kuldeep rawat

System ist die Java Klasse.

out ist die Instanz und auch statisches Mitglied von PrintStream.

println ist die Methode von PrintStream.

0
Ravi Rupapara

System - Klasse, die ihrem Wesen nach final ist. public final class System{}. Gehört zum Paket Java.lang

out - static Referenzvariable vom Typ PrintStream

println() - Nicht static Methode in PrintStream Klasse. PrintStream gehört zum Paket Java.io.

Um es besser zu verstehen, besuchen Sie: Funktionsweise von System.out.println () in Java

0
Mantu