Quelle est la signification du système?hors.println en Java?
20 réponses
Pas de. En fait out
est un membre statique dans la classe System
(pas comme dans .NET), étant une instance de PrintStream
. Et println
est une méthode normale (surchargée) de la classe PrintStream
.
voir http://download.oracle.com/javase/6/docs/api/java/lang/System.html#out .
en fait, si out
/ err
/ in
si les classes étaient, elles seraient nommées avec le caractère de capitale ( Out
/ Err
/ In
) en raison de la Convention d'appellation (en ignorant la grammaire).
System
est une classe, qui a un champ statique public out
. Donc c'est plus comme
class System
{
public static PrintStream out;
}
class PrintStream
{
public void println ...
}
c'est une légère simplification excessive, car la classe PrintStream
est en fait dans le paquet java.io
, mais c'est suffisant pour montrer la relation entre les choses.
Vérifier le lien suivant:
http://download.oracle.com/javase/1.5.0/docs/api/java/lang/System.html
You will clear that:
System
est une classe dans le colis java.lang
.
out
est un élément statique de la classe System
, et est une instance de java.io.PrintStream
.
println
est une méthode de java.io.PrintStream
. Cette méthode est surchargée pour imprimer le message vers la destination de sortie, qui est généralement une console ou un fichier.
du Système.hors.println ()
Compréhension
pour comprendre cela, nous avons besoin de rappeler quelques bases de java:
- dot (. opérateur en java: java . (opérateur de point) est utilisé seulement pour appeler des méthodes ou des variables. On peut donc dire que out est soit une méthode, soit une variable. Méthodes
- en java : nous savons les méthodes ont toujours des parenthèses ‘ () ' après le nom de la méthode, donc hors ne peut pas être une méthode en java. Si son une variable et println() est une méthode .
- nom de classe en java: le nom de classe doit commencer par la lettre majuscule idéalement en java, système So est une classe .
maintenant avec des connaissances de base de java nous savons :
- "1519150920 Système de" Classe
- out est une Variable
- println () est une méthode
pour en savoir plus:
variable : statique ou de l'instance?
-
appelé en utilisant le nom de classe, donc nous connaissons sa variable statique de classe système.
-
mais son appel une méthode println () méthode so ' out’ est un objet de le type de référence PrintStream.
la classe de système appartient à java.lang package
class System {
public static final PrintStream out;
//...
}
la classe Prinstream appartient à java.colis io
class PrintStream{
public void println();
//...
}
println
et print
sont les deux méthodes surchargées qui appartiennent à la classe PrintStream
.
Pour y accéder, nous avons besoin d'une instance de cette classe.
Un propriété statique de la appelé out
de type PrintStream
est créé sur le System
de la classe.
donc pour accéder aux méthodes ci-dessus nous utilisons les suivantes déclarations:
System.out.println("foo");
System.out.print("foo");
System.out.println("Hello World");
-
System
: C'est le nom de la classe standard qui contient les objets qui encapsule la norme I/O dispositifs de votre système.
il est contenu dans le paquet java.lang
". Depuis java.lang
paquet est importé dans chaque programme java par défaut,donc java.lang
paquet est le seul paquet dans L'API Java qui ne nécessite pas de déclaration d'importation.
-
out
: l'objet out représente le flux de sortie(I. e commandement fenêtre) et est le membre de données statiques de la classeSystem
.
alors notez ici System.out
( System
-Classe & out
- objet statique I. e pourquoi il est simplement référencé par classname et nous n'avons pas besoin de créer un objet ).
-
println
: Leprintln()
est méthode deout
objet prend la chaîne de texte comme argument et l'affiche à la norme résultats I. e sur l'écran du moniteur .
Note
System
-Classe
out
-objet statique
println()
-méthode
rappelez-vous une fonction (en Java la fonction s'appelle la méthode) a toujours le format la fonction()
• System
est une classe de java.lang
colis
• out
est un static
objet de PrintStream
classe dans java.io
paquet
• println()
est une méthode de la PrintStream
classe
PrintStream
System
est une classe de java.lang
paquet, out
est un objet de PrintStream
classe et aussi static
membre de données de System
classe, print()
et println()
est une méthode d'instance de PrintStream
classe.
il est de fournir une sortie douce sur la console.
il est assez simple de comprendre la question, mais pour y répondre nous devons creuser plus profondément dans le code Java native.
-
System
est une classe statique et ne peut pas être instanciée -
out
est une variable de référence définie dansSystem
-
println()
est la méthode utilisée pour imprimer sur une sortie standard.
Un brève et belle explication est toujours les bienvenus sur ce que nous pouvons beaucoup apprendre de cette seule ligne d'instruction lui-même!
parce que out est appelé avec le nom de classe System
lui-même, pas une instance d'une classe (un objet), donc out
doit être une variable statique appartenant à la classe System
. out
doit être une instance d'une classe, car elle invoque la méthode println()
.
// the System class belongs to java.lang package
class System {
public static final PrintStream out;
}
class PrintStream {
public void println();
}
System
est une classe de java.lang package
. Et out
est un objet PrintStream
. Nice explanation @ http://lazy-geeks.blogspot.in/2015/01/what-is-systemoutprintln.html
System.out.println();
System
est la classe
out
est une variable de la classe System
et il est un static
et le type de variable est PrintStream
.
voici la variable out
dans System
classe:
public final static PrintStream out = null;
vous pouvez voir la mise en œuvre de System
ici .
println()
est une méthode surchargée de la classe PrintStream
.
PrintStream
comprend trois méthodes d'impression surchargées, à savoir:"
-
print()
-
println()
-
printf()
, Vous pouvez voir la mise en œuvre de PrintStream
ici .
vous ne pouvez pas instantiate System
classe et il est classe enfant de Object
et le Object
est le père(superclasse) de toutes les classes y compris les classes que vous avez définies.
voici ce que dit l'oracle docs:
public final class System extends Object
la classe
System
contient plusieurs champs et méthodes utiles. Il ne peut pas être instanciée.Parmi les équipements fournis par la classe
System
sont entrées standard, flux de sortie standard, et flux de sortie d'erreur; accès à l'extérieur propriétés définies et variables d'environnement; un moyen de charger des fichiers et les bibliothèques; et une méthode utilitaire pour copier une partie de tableau.depuis: JDK1.0
si vous ne savez pas que signifie instantiate, lisez cette question . C'est la question C# mais le concept est de même.
aussi, Quelle est la différence entre une Instance et un objet?
si vous ne savez pas qu'entend-on par surcharge lisez cette question .
System
est une classe.
la variable out (ci-dessus appelée System.out
) est une variable de classe de la classe système.
la classe PrintStream
est dans un paquet de classes qui sont utilisées pour fournir la capacité d'e/s de flux pour Java.
la variable out
de la classe System
se réfère (pointe) à une instance de la classe PrintStream
(objet PrintStream
) qui est automatiquement instanciée lorsque la classe System
est chargée dans l'application.
La classe PrintStream
a une méthode d'instance appelée println()
qui fait afficher son argument sur le périphérique de sortie standard.
System
est une classe du colis java.lang
.
out
est l'élément de données statique de la classe System
et de la variable de référence de la classe PrintStream
.
Println()
est une méthode normale (surchargée) de la classe PrintStream
.
du javadoc à propos de System
, voici ce que dit le doc:
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
concernant 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.
concernant println ();
class PrintStream{
public void println();
}
pour les applications Java autonomes simples, une façon typique d'écrire une ligne de données de sortie est:
System.out.println(data);
System
- classe qui est final
dans la nature. public final class System{}
. Appartient à java.lang
paquet
out
- static
variable de référence du type PrintStream
println()
- Non static
méthode dans la classe PrintStream
.
PrintStream
fait partie du paquet java.io
.
pour mieux le comprendre, vous pouvez visiter: comment le système.hors.println () fonctionne en Java
Système est la classe java.
out est l'instance et aussi l'élément statique de PrintStream.
println est la méthode de PrintStream.
.hors.println("...") en code Java est traduit en JVM. En regardant le JVM, j'ai pu mieux comprendre ce qui se passe derrière le capot.
du livre Programmation de la forme de la Machine Virtuelle Java . Ce code est copié de https://github.com/ymasory/programming-for-the-jvm/blob/master/examples/HelloWorld.j .
c'est le code source JVM.
.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
comme" la JVM ne permet pas l'accès au niveau des octets à la mémoire "l'objet out
de type L java/io/PrintSteram
est stocké dans une pile avec la commande getstatic
de la JVM.
L'argument est poussé sur la pile avant d'appelé une méthode println
de la java/io/PrintStream
classe d'une instance nommée out
. Le paramètre de la méthode est (l java/lang/String
;) et le type de sortie est nul (V).
System.out.println
System
- est une classe de java.lang
paquet.
out
est un membre de données static
de la classe System
et fait référence à une variable de la classe PrintStream
.
System
: est une classe prédéfinie de colis java.lang
.
out
: est un static
membre de la classe printStream
et sa connexion avec la console.
Println
: est une méthode de la classe printstream
et non pas un static
.