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.lang
e é automaticamenteinicializado
quando o JVM é iniciado. OinitializeSystemClass()
é usado para inicializá-lo. - A classe
System
contém uma instância da classePrintStream
. Esta variável de instância é chamada deout
. É definido com os modificadorespublic
,static
efinal
.
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é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.