Método Java system.out.println()
-
O que é o método
System.out.println()? -
Como
System.out.println()funciona? -
Função de
toString()no métodoprint() - Resumo
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 pacotejava.lange é automaticamenteinicializadoquando o JVM é iniciado. OinitializeSystemClass()é usado para inicializá-lo. - A classe
Systemcontém uma instância da classePrintStream. Esta variável de instância é chamada deout. É definido com os modificadorespublic,staticefinal.
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
PrintStreamcontém vários métodosprint()eprintln()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()eprintln()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étodoprintln(). - 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.