2012-08-17 14 views
35

Eventuali duplicati:
What's the meaning of System.out.println in Java?Che cosa è sistema, fuori, println in System.out.println() in Java

Cercavo la risposta di ciò che System, out e println sono in System.out.println() in Java. Ho cercato e trovato una risposta diversa come questi:

  • System è una classe incorporata presente nel pacchetto java.lang. Questa classe ha un modificatore finale, il che significa che non può essere ereditato da altre classi. Contiene metodi e campi predefiniti, che fornisce servizi come standard input, output, ecc

  • out è un campo finale statico (cioè, variabile) in classe System, che è di tipo PrintStream (una classe built-in, contiene metodi per stampare i diversi valori dei dati). È necessario accedere ai campi e ai metodi statici utilizzando il nome della classe, quindi (System.out).

  • fuori qui indica la variabile di riferimento della classe tipo PrintStream.

  • println() è un metodo pubblico in classe PrintStream per stampare i valori dei dati. Quindi, per accedere a un metodo in classe PrintStream, usiamo out.println() (come metodi non statici e campi si può accedere solo tramite varialble refrence)

In un'altra pagina trovo un altro contrasto definizione come

System.out.print è una funzione di output standard utilizzata in java. dove System specifica il nome del pacchetto, out specifica il nome della classe e print è una funzione in quella classe.

Sono confuso da questi. Qualcuno potrebbe dirmi esattamente cosa sono?

+1

Vedere http://stackoverflow.com/q/3406703/396730 e http://stackoverflow.com/q/10004856/396730 –

+0

Penso che la prima spiegazione sia in qualche modo più chiara, e puoi sempre consultare la fonte per vedere per te, ad es 'statico finale pubblico PrintStream out = nullPrintStream();' – Less

+8

La seconda spiegazione è semplicemente sbagliata. –

risposta

7

La prima risposta che hai postato (System è una classe incorporata ...) è bel posto.

È possibile aggiungere che la classe System contiene grandi porzioni che sono nativi e che è impostato dalla JVM durante l'avvio, come il collegamento del System.out printstream nel flusso di output nativo associata al "standard out" (console).

11

Ogni volta che si è confusi, suggerirei di consultare lo Javadoc come primo posto per i chiarimenti.

Dal javadoc su System, ecco cosa dice il 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 

Per quanto riguarda 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

Consultando Javadoc va bene quando capisci cosa dicono. Ma se non lo fai? Ad esempio un principiante potrebbe non comprendere i concetti di output standard e flussi di output degli errori e che uno stream è già aperto e pronto ad accettare i dati di output. Ovviamente il newbie potrebbe google per questi concetti, ma questo porta spesso a nuovi concetti che non capisce ad infinitum. Non sto dicendo che c'è qualcosa di sbagliato in Javadocs. Sto solo facendo notare le difficoltà che potrebbe avere un principiante. Questo è il motivo per cui spesso si rivolge a SO per ottenere spiegazioni in una lingua che può comprendere. –

+0

@BobUeland: Quando non capisci qualcosa, IMO, il modo migliore è guardare la documentazione di esso, piuttosto che guardare all'interpretazione delle persone della stessa cosa. Quando le persone interpretano i documenti ufficiali con le loro stesse parole, a volte potrebbero diventare una fonte di confusione in sé. Voglio dire, ci sono molti modi per spiegare la stessa cosa con le tue stesse parole e se ci sono moltissime risposte, è probabile che la confusione di per sé sia ​​piuttosto alta. – Sujay

+0

Sono d'accordo con te, ma i neofiti che non capiscono i documenti vogliono/hanno bisogno di qualcosa del genere: "Guarda il System.out.println(). Il primo inizia con la lettera maiuscola quindi è una classe. quindi è un metodo, il secondo inizia con la lettera minuscola e non ha(), quindi è un campo: vuoi stampare qualcosa ma devi trovare il ragazzo che può fare il lavoro per te. Non sai quel ragazzo, byt conosci il Sistema, che ha un campo chiamato, che punta al ragazzo, quindi sai che System.out punta al ragazzo e sai che questo ragazzo ha il metodo println() –

102

System è una classe finale del pacchetto java.lang.

out è una variabile di classe di tipo PrintStream dichiarata nella classe System.

println è un metodo della classe PrintStream.

+11

questa dovrebbe essere la risposta corretta – OMGPOP