imprimir - ¿Cuál es el significado de System.out.println en Java?
system.out.println java atajo (20)
System.out.println ()
Comprensión de alto nivel
Para entender esto, debemos recordar algunos conceptos básicos de Java:
- operador de punto (.) en java: en java. (operador de punto) se usa solo para llamar a métodos o variables. Entonces podemos decir que es un método o una variable.
- Métodos en Java: sabemos que los métodos siempre tienen paréntesis ''()'' después del nombre del método, así que no puede ser un método en Java. Así que es una variable y println () es un método .
- Nombre de la clase en Java: el nombre de la clase debe comenzar con mayúscula idealmente en java, entonces el sistema es una clase .
Ahora con conocimientos básicos de Java, sabemos:
- El sistema es una clase
- fuera es una variable
- println () es un método
Permite obtener más detalles:
variable de salida : estática o instancia?
llamado utilizando el nombre de la clase, por lo que sabemos su variable estática de la clase del sistema.
pero su llamado a un método println () método ''fuera'' es un objeto del tipo de referencia PrintStream.
la clase del sistema pertenece al paquete java.lang
class System {
public static final PrintStream out;
//...
}
la clase Prinstream pertenece al paquete java.io
class PrintStream{
public void println();
//...
}
¿Esta función de println
estática println
out
clase desde el espacio de nombres del System
?
namespace System { class out { static println ... }
¿Cómo puedo interpretar este nombre? ¿Y dónde en JRE se define esta función? En java.lang.System
/ java.lang.Object
?
• El System
es una clase en el paquete java.lang
• out
es un objeto static
de la clase PrintStream
en el paquete PrintStream
• println()
es un método en la clase PrintStream
Debido a que se llama a out con el nombre de clase del System
sí, no a una instancia de una clase (un objeto), So out
debe ser una variable estática que pertenece a la clase System
. out
debe ser instancia de una clase, porque invoca el método println()
.
// the System class belongs to java.lang package
class System {
public static final PrintStream out;
}
class PrintStream {
public void println();
}
Desde javadoc sobre System
, esto es lo que dice el documento:
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
En cuanto a 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.
En cuanto a println ();
class PrintStream{
public void println();
}
Para aplicaciones Java simples e independientes, una forma típica de escribir una línea de datos de salida es:
System.out.println(data);
Es bastante simple entender la pregunta, pero para responderla necesitamos profundizar en el código nativo de Java.
-
System
es de clase estática y no se puede instanciar -
out
es una variable de referencia definida enSystem
-
println()
es el método utilizado para imprimir en salida estándar.
Una breve y agradable explicación siempre es bienvenida, ya que podemos aprender mucho de esta única línea de enunciado.
No. En realidad, out
es un miembro estático en la clase System
(no como en .NET), siendo una instancia de PrintStream
. Y println
es un método normal (sobrecargado) de la clase PrintStream
.
Ver http://download.oracle.com/javase/6/docs/api/java/lang/System.html#out .
En realidad, si out
/ err
/ in
fueran clases, se nombrarían con mayúsculas ( Out
/ Err
/ In
) debido a la convención de nomenclatura (ignorando la gramática).
System.out.println ("...") en código Java se traduce a JVM. Mirar hacia la JVM me permitió comprender mejor lo que ocurre detrás del capó.
Del libro Programming form the Java Virtual Machine . Este código se copia de https://github.com/ymasory/programming-for-the-jvm/blob/master/examples/HelloWorld.j .
Este es el código fuente de 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
Como "La JVM no permite el acceso de nivel de byte a la memoria", el objeto de out
en el tipo L java/io/PrintSteram
; se almacena en una pila con el getstatic
JVM getstatic
. Luego, el argumento se empuja en la pila antes de llamar a un método println
de la clase java/io/PrintStream
de una instancia nombrada. El parámetro del método es (L java/lang/String
;) y el tipo de salida es vacío (V).
Ver el siguiente enlace:
http://download.oracle.com/javase/1.5.0/docs/api/java/lang/System.html
Verá claramente que:
System
es una clase en el paquete java.lang
.
out
es un miembro estático de la clase System
, y es una instancia de java.io.PrintStream
.
println
es un método de java.io.PrintStream
. Este método está sobrecargado para imprimir el mensaje al destino de salida, que generalmente es una consola o archivo.
System
- clase que es de naturaleza final
. public final class System{}
. Pertenece al paquete java.lang
out
- variable de referencia static
de tipo PrintStream
println()
- método no static
en la clase PrintStream
. PrintStream
pertenece al paquete PrintStream
Para entenderlo mejor, puede visitar: Cómo funciona System.out.println () en Java
System
es una clase del paquete java.lang
, out
es un objeto de la clase PrintStream
y también miembro de datos static
de la clase System
, print()
y println()
es un método de instancia de la clase PrintStream
. es proporcionar salida suave en la consola.
System
es una clase en el java.lang package
. Y out
un objeto PrintStream
. Buena explicación @ http://lazy-geeks.blogspot.in/2015/01/what-is-systemoutprintln.html
System
es una clase en el paquete java.lang
.
out
es el miembro de datos estáticos en la clase del System
y la variable de referencia de la clase PrintStream
.
Println()
es un método normal (sobrecargado) de la clase PrintStream
.
System
es una clase que tiene un campo público estático out
. Entonces es más como
class System
{
public static PrintStream out;
}
class PrintStream
{
public void println ...
}
Esta es una pequeña simplificación excesiva, ya que la clase PrintStream
está realmente en el paquete java.io
, pero es lo suficientemente buena para mostrar la relación de las cosas.
System
es una clase.
La variable de salida (referida anteriormente como System.out
) es una variable de clase de la clase System.
La clase PrintStream
está en un paquete de clases que se utilizan para proporcionar capacidad de E / S de flujo para Java.
La variable de out
en la clase del System
refiere a (apunta a) una instancia de la clase PrintStream
(un objeto PrintStream
) que se PrintStream
una instancia automáticamente cuando se carga la clase System
en la aplicación. La clase PrintStream
tiene un método de instancia llamado println()
que hace que su argumento se muestre en el dispositivo de salida estándar.
println
e print
son los dos métodos sobrecargados que pertenecen a la clase PrintStream
.
Para acceder a ellos, necesitamos una instancia de esta clase.
Se crea una propiedad estática llamada out
del tipo PrintStream
en la clase del System
.
Por lo tanto, para acceder a los métodos anteriores, usamos las siguientes afirmaciones:
System.out.println("foo");
System.out.print("foo");
System
: es una clase predefinida del paquete java.lang
.
out
: es un miembro static
de la clase printStream
y se conecta con la consola.
Println
: es un método de clase printstream
y no es static
.
El sistema es la clase java.
out es la instancia y también miembro estático de PrintStream.
println es el método de PrintStream.
System.out.println
System
- es una clase en java.lang
pacakge. out
es un miembro de datos static
de la clase System
y hace referencia a una variable de PrintStream
Class.
System.out.println("Hello World");
-
System
: es el nombre de la clase estándar que contiene objetos que encapsula los dispositivos de E / S estándar de su sistema.
Está contenido en el paquete java.lang
. Como el paquete java.lang
se importa en cada programa java de forma predeterminada, el paquete java.lang
es el único en la API de Java que no requiere una declaración de importación.
-
out
: El objeto out representa el flujo de salida (es decir, la ventana de comandos) y es el miembro de datos estáticos de la claseSystem
.
Así que tenga en cuenta aquí System.out
( System
Class & out
- objeto estático, es decir, por qué simplemente se hace referencia por nombre de clase y no necesitamos crear ningún objeto ).
-
println
:println()
es un método de objeto que toma la cadena de texto como argumento y la muestra en la salida estándar, es decir, en la pantalla del monitor .
Nota
System
Clase
Objeto fuera de estado
println()
-metodo
Recuerde que una función (en la función java se llama método) siempre tiene la función de formato ()
System.out.println();
System
es la clase
out
es una variable en la clase System
y es un tipo static
y variable es PrintStream
.
Aquí está la variable de out
en la clase del System
:
public final static PrintStream out = null;
Puede ver la implementación del System
aquí .
println()
es un método sobrecargado en la clase PrintStream
.
PrintStream
incluye tres métodos de impresión sobrecargados, que son:
-
print()
-
println()
-
printf()
Puede ver la implementación de PrintStream
aquí .
No se puede crear una instancia de la clase System
y es una clase secundaria de Object
y el Object
es el padre (superclase) de todas las clases, incluidas las clases que usted definió.
Esto es lo que dicen los documentos del oráculo:
public final class System extends Object
La clase del
System
contiene varios campos y métodos de clase útiles. No puede ser instanciado.Entre las facilidades proporcionadas por la clase
System
encuentran las entradas estándar, la salida estándar y las secuencias de salida de error; acceso a propiedades definidas externamente y variables de entorno; un medio de cargar archivos y bibliotecas; y un método de utilidad para copiar rápidamente una parte de una matriz.Desde: JDK1.0
Si no sabes a qué se refiere la creación de instancias, lee esta pregunta . Es una pregunta C # pero el concepto es el mismo.
Además, ¿cuál es la diferencia entre una instancia y un objeto?
Si no sabes lo que significa sobrecarga, lee esta pregunta .