Método Java system.out.println()

Mohammad Irfan 12 outubro 2023
  1. O que é o método System.out.println()?
  2. Como System.out.println() funciona?
  3. Função de toString() no método print()
  4. Resumo
Método Java system.out.println()

Este tutorial apresenta como o método System.out.println() funciona em Java e lista alguns códigos de exemplo para entender o tópico.

O System.out.print() é um método muito usado para imprimir no console ou na saída padrão. Esse método às vezes é chamado de método de linha de impressão. Além de imprimir para o console, o método println() move o cursor para uma nova linha.

Neste tutorial, tentaremos entender o funcionamento interno deste método.

O que é o método System.out.println()?

  • O System.out.println() pode ser dividido em três partes.
  • O System é uma classe final do pacote java.lang e é automaticamente inicializado quando o JVM é iniciado. O initializeSystemClass() é usado para inicializá-lo.
  • A classe System contém uma instância da classe PrintStream. Esta variável de instância é chamada de out. É definido com os modificadores public, static e final.
class System {
  public static final PrintStream out;
  // More Code Below
}

A classe PrintStream contém os métodos print() e println(). Esses métodos estão sobrecarregados.

class PrintStream {
  public void print(argument) {
    // implementation
  }
  public void println() {
    // implementation
  }
  // Overloaded print() and println() methods below
}

Portanto, System.out nos dá a variável de instância out da classe PrintStream. Podemos então chamar o método print() ou println() nesta variável de instância.

Como System.out.println() funciona?

  • A classe PrintStream contém vários métodos print() e println() sobrecarregados. Eles diferem no tipo de parâmetros aceitos.
  • O tipo de retorno de todos eles é nulo.
  • Existe um método sobrecarregado para todos os tipos primitivos.
  • Também contém um método sobrecarregado para imprimir strings e outro para objetos.

O código a seguir demonstra o funcionamento dos métodos println() sobrecarregados.

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
  }
}

Produção:

10
10
10
A
ABC
true
10.0
10.0
hello
java.lang.Object@433c675d

Argumentos passados ​​para o método println()

  • Um iniciante pode pensar que os métodos print() e println() recebem um número variável de argumentos (varargs), mas este não é o caso.
  • Por exemplo, no código abaixo, estamos tentando imprimir um inteiro, uma string e um caractere.
public class PrintDemo {
  public static void main(String args[]) {
    int i = 10;
    String s = "hello";
    char c = 'O';
    System.out.println(i + s + c);
  }
}

Produção:

10helloO
  • Mas não estamos passando três argumentos diferentes. Uma vírgula separa os argumentos de um método.
  • Em vez disso, eles são concatenados usando o operador + no método println().
  • O operador + usado com uma string levará à concatenação da string e retornará uma string.
  • No código acima, o inteiro é primeiro concatenado com a string, e a string resultante é novamente concatenada com a variável char.

Outra coisa a notar é que o argumento passado para o método é avaliado da esquerda para a direita. Portanto, se as duas primeiras variáveis ​​passadas forem inteiras, ocorre a adição aritmética normal e o resultado da adição é concatenado com a string.

public class PrintDemo {
  public static void main(String args[]) {
    System.out.println(10 + 10 + "hello"); // first integer addition and then string concatenation
  }
}

Produção:

20hello

Mas a concatenação de string ocorrerá se mais dois inteiros estiverem presentes após a string.

public class PrintDemo {
  public static void main(String args[]) {
    System.out.println(10 + 10 + "hello" + 1 + 1); // 20hello11 not 20hello2
  }
}

Produção:

20hello11

Podemos aplicar a regra mostrada abaixo da esquerda para a direita para calcular a saída. Se nenhuma string estiver presente, a adição aritmética normal ocorrerá.

(any data type + string) = (string + any data type) = (concatenated string)

Função de toString() no método print()

Os métodos print() e println() chamam implicitamente o método toString() no argumento. Ele converte o argumento em uma string. Isso é muito útil se quisermos imprimir instâncias de classes definidas pelo usuário de uma maneira particular.

Podemos sobrescrever o método toString() em nossa classe para imprimir nosso objeto em formatos diferentes. O exemplo a seguir demonstra isso.

Exemplo: Sem substituir o 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);
  }
}

Produção:

Demo@433c675d

Exemplo: Depois de substituir o 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);
  }
}

Produção:

f1 f2

Resumo

Os métodos print() e println() fazem parte da classe PrintStream. Eles são acessados ​​usando a variável de instância System.out. Esses métodos são sobrecarregados para lidar com diferentes tipos de argumento. Lembre-se de que esses métodos não aceitam um número variável de argumentos. Neste tutorial, aprendemos como os métodos System.out.print() e System.out.println() funcionam.

Artigo relacionado - Java Print