Método Java system.out.println()

Mohammad Irfan 12 octubre 2023
  1. ¿Qué es el método System.out.println()?
  2. ¿Cómo funciona System.out.println()?
  3. Papel de toString() en el método print()
  4. Resumen
Método Java system.out.println()

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 paquete java.lang y se inicializa automáticamente cuando se inicia la JVM. El initializeSystemClass() se utiliza para inicializarlo.
  • La clase System contiene una instancia de la clase PrintStream. Esta variable de instancia se llama out. Se define con los modificadores public, static y final.
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étodos print() y println() 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() y println() 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étodo println().
  • 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().

Artículo relacionado - Java Print