Método Java system.out.println()
-
¿Qué es el método
System.out.println()
? -
¿Cómo funciona
System.out.println()
? -
Papel de
toString()
en el métodoprint()
- Resumen
Este tutorial presenta cómo funciona el método System.out.println()
en Java y enumera algunos códigos de ejemplo para comprender el tema.
El System.out.print()
es un método muy utilizado para imprimir en la consola o en la salida estándar. Este método a veces se denomina método de línea de impresión. Además de imprimir en la consola, el método println()
mueve el cursor a una nueva línea.
En este tutorial, intentaremos comprender el funcionamiento interno de este método.
¿Qué es el método System.out.println()
?
- El
System.out.println()
se puede dividir en tres partes. - El
System
es una clase final del paquetejava.lang
y seinicializa
automáticamente cuando se inicia la JVM. ElinitializeSystemClass()
se utiliza para inicializarlo. - La clase
System
contiene una instancia de la clasePrintStream
. Esta variable de instancia se llamaout
. Se define con los modificadorespublic
,static
yfinal
.
class System {
public static final PrintStream out;
// More Code Below
}
La clase PrintStream
contiene los métodos print()
y println()
. Estos métodos están sobrecargados.
class PrintStream {
public void print(argument) {
// implementation
}
public void println() {
// implementation
}
// Overloaded print() and println() methods below
}
Entonces, System.out
nos da la variable de instancia out
de la clase PrintStream
. Entonces podemos llamar al método print()
o println()
en esta variable de instancia.
¿Cómo funciona System.out.println()
?
- La clase
PrintStream
contiene múltiples métodosprint()
yprintln()
sobrecargados. Se diferencian en el tipo de parámetros aceptados. - El tipo de devolución de todos ellos es nulo.
- Existe un método sobrecargado para todos los tipos primitivos.
- También contiene un método sobrecargado para imprimir cadenas y otro para objetos.
El siguiente código demuestra el funcionamiento de los métodos println()
sobrecargados.
public class PrintDemo {
public static void main(String args[]) {
int i = 10;
short s = 10;
long l = 10;
char c = 'A';
char[] charArr = {'A', 'B', 'C'};
boolean bool = true;
double d = 10.0;
float f = 10.0f;
String str = "hello";
Object o = new Object();
System.out.println(); // terminate the current line
System.out.println(i); // print integer
System.out.println(s); // print short
System.out.println(l); // print long
System.out.println(c); // print char
System.out.println(charArr); // print char array
System.out.println(bool); // print boolean
System.out.println(d); // print double
System.out.println(f); // print float
System.out.println(str); // print String
System.out.println(o); // print Object
}
}
Producción :
10
10
10
A
ABC
true
10.0
10.0
hello
java.lang.Object@433c675d
Argumentos pasados al método println()
- Un principiante puede pensar que los métodos
print()
yprintln()
toman un número variable de argumentos (varargs
), pero este no es el caso. - Por ejemplo, en el código siguiente, estamos intentando imprimir un número entero, una cadena y un carácter.
public class PrintDemo {
public static void main(String args[]) {
int i = 10;
String s = "hello";
char c = 'O';
System.out.println(i + s + c);
}
}
Producción :
10helloO
- Pero no estamos pasando tres argumentos diferentes. Una coma separa los argumentos de un método.
- En su lugar, se concatenan juntos usando el operador
+
en el métodoprintln()
. - El operador
+
utilizado con una cadena conducirá a la concatenación de cadenas y devolverá una cadena. - En el código anterior, el número entero se concatena primero con la cadena y la cadena resultante se vuelve a concatenar con la variable char.
Otra cosa a tener en cuenta es que el argumento que se pasa al método se evalúa de izquierda a derecha. Entonces, si las dos primeras variables pasadas son enteros, entonces se lleva a cabo la suma aritmética normal y el resultado de la suma se concatena con la cadena.
public class PrintDemo {
public static void main(String args[]) {
System.out.println(10 + 10 + "hello"); // first integer addition and then string concatenation
}
}
Producción :
20hello
Pero la concatenación de cadenas tendrá lugar si hay dos enteros más presentes después de la cadena.
public class PrintDemo {
public static void main(String args[]) {
System.out.println(10 + 10 + "hello" + 1 + 1); // 20hello11 not 20hello2
}
}
Producción :
20hello11
Podemos aplicar la regla que se muestra a continuación de izquierda a derecha para calcular la salida. Si no hay cadenas, se realiza la suma aritmética normal.
(any data type + string) = (string + any data type) = (concatenated string)
Papel de toString()
en el método print()
Los métodos print()
y println()
llaman implícitamente al método toString()
en el argumento. Convierte el argumento en una cadena. Esto es muy útil si queremos imprimir instancias de clases definidas por el usuario de una manera particular.
Podemos anular el método toString()
en nuestra clase para imprimir nuestro objeto en diferentes formatos. El siguiente ejemplo demuestra esto.
Ejemplo: sin anular el método toString()
.
class Demo {
String field1;
String field2;
Demo(String f1, String f2) {
this.field1 = f1;
this.field2 = f2;
}
}
public class PrintDemo {
public static void main(String args[]) {
Demo d = new Demo("f1", "f2");
System.out.print(d);
}
}
Producción :
Demo@433c675d
Ejemplo: después de anular el método toString()
.
class Demo {
String field1;
String field2;
Demo(String f1, String f2) {
this.field1 = f1;
this.field2 = f2;
}
@Override
public String toString() {
return field1 + " " + field2;
}
}
public class PrintDemo {
public static void main(String args[]) {
Demo d = new Demo("f1", "f2");
System.out.print(d);
}
}
Producción :
f1 f2
Resumen
Los métodos print()
y println()
son parte de la clase PrintStream
. Se accede a ellos utilizando la variable de instancia System.out
. Estos métodos están sobrecargados para tratar con diferentes tipos de argumentos. Recuerde que estos métodos no toman un número variable de argumentos. En este tutorial, aprendimos cómo funcionan los métodos System.out.print()
y System.out.println()
.