2012-08-17 9 views
35

Duplicar posibles:
What's the meaning of System.out.println in Java?¿Qué es el Sistema, hacia fuera, println en System.out.println() en Java

que estaba buscando la respuesta de lo que System, y outprintln están en System.out.println() en Java. Busqué y encontré una respuesta diferente como estos:

  • del sistema es una clase incorporada presente en paquete java.lang. Esta clase tiene un modificador final, lo que significa que no puede ser heredado por otras clases. Contiene métodos y campos predefinidos, que proporciona instalaciones como entrada estándar, salida, etc.

  • a cabo es un campo static final (es decir, variable) en la clase de sistema que es del tipo PrintStream (una clase incorporada, contiene métodos para imprimir los diferentes valores de datos). campos y métodos estáticos deben ser accedidos usando el nombre de clase, entonces (System.out).

  • aquí denota la variable de referencia de la clase de tipo PrintStream.

  • println() es un método público en clase PrintStream para imprimir los valores de los datos. Por lo tanto acceder a un método en la clase PrintStream, utilizamos out.println() (como métodos no estáticos y los campos sólo se puede acceder mediante el uso de la Varialble refrence)

En otra página que encuentre otro contraste definición como

System.out.print es una función de salida estándar utilizada en Java. donde System especifica el nombre del paquete, out especifica el nombre de la clase e print es una función en esa clase.

Estoy confundido por estos. ¿Alguien podría decirme exactamente qué son?

+1

Ver http://stackoverflow.com/q/3406703/396730 y http://stackoverflow.com/q/10004856/396730 –

+0

Creo que la primera explicación es algo más clara, y siempre se puede navegar por la fuente para ver por ti mismo, por ejemplo 'public static final PrintStream out = nullPrintStream();' – Less

+8

La segunda explicación es simplemente incorrecta. –

Respuesta

7

La primera respuesta que envió (sistema es una clase incorporada ...) es lugar bonito en.

Puede añadir que la clase System contiene grandes porciones que son nativas y que está configurado por la JVM durante el inicio, que conecta al flujo de impresión System.out al flujo de salida nativa asociada a la "salida estándar" (consola).

11

Siempre que esté confundido, le sugiero consultar el Javadoc como el primer lugar para su aclaración.

Desde el Javadoc sobre System, aquí es lo que dice el doctor:

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 System.out

public static final PrintStream out 
The "standard" output stream. This stream is already open and ready to accept output data. Typically this stream corresponds to display output or another output destination specified by the host environment or user. 
For simple stand-alone Java applications, a typical way to write a line of output data is: 

    System.out.println(data) 
+1

Consultar el Javadoc está bien cuando entiendes lo que dicen. Pero si no? Por ejemplo, un novato podría no entender los conceptos de salida estándar y flujos de salida de error y de que una transmisión ya está abierta y lista para aceptar datos de salida. Por supuesto, el novato podría buscar estos conceptos en Google, pero eso a menudo lleva a nuevos conceptos que no comprende ad infinitum. No digo que haya algún problema con Javadocs. Solo estoy señalando las dificultades que un novato podría tener. Es por eso que a menudo recurre a SO para obtener una explicación en un lenguaje que no puede entender. –

+0

@BobUeland: Cuando no entiende algo, OMI, la mejor manera posible es mirar la documentación de la misma, en lugar de mirar la interpretación de la gente de lo mismo. Cuando las personas interpretan documentos oficiales con sus propias palabras, eso a veces puede convertirse en una fuente de confusión en sí mismo. Quiero decir que hay muchas maneras de explicar lo mismo en tus propias palabras y si hay multitud de respuestas, las posibilidades de que sean confusas en sí mismas son bastante altas. – Sujay

+0

Estoy de acuerdo contigo, pero los novatos que no entienden los documentos quieren/necesitan algo como esto: "Mira System.out.println(). El primero comienza con mayúscula, por lo que es una clase. El tercero tiene() entonces es un método. El segundo comienza con letra minúscula y no tiene(), entonces es un campo. Quieres imprimir algo pero debes encontrar al tipo que pueda hacer el trabajo por ti. No conoces a ese tipo, byt usted sabe que el Sistema, que tiene un campo llamado, que apunta al tipo. Entonces usted sabe que System.out le dice al tipo, y usted sabe que este tipo tiene el método println(). –

102

System es una clase final del paquete java.lang.

out es una variable de clase del tipo PrintStream declarada en la clase System.

println es un método de la clase PrintStream.

+11

esta debería ser la respuesta correcta – OMGPOP

Cuestiones relacionadas