Galera, estava estudando aqui e me deparei com o método toString(), em que ele retorna uma String (lógico), segue o trecho:
O método toString de um objeto é chamado implicitamente quando o objeto é utilizado onde uma String é esperada (por exemplo, quando printf gera saída do objeto como uma String utilizando o especificador de
formato %s ou quando o objeto é concatenado para uma String utilizando o operador +). Para que esse comportamento ocorra, toString
deve ser declarada com o cabeçalho public String toString().
Esse método não precisa ser chamado para retornar a String? Em que circunstância esse método vai retornar a String?
Todas as classes são implicitamente estendidas da classe Object e a classe Object possui o método toString.
Se usar o Netbeans, toda vez que vc implementar o toString, será solicitado para inserir a annotation Override, que significa que está sobrescrevendo um método.
É claro que para retornar a string, o método precisa ser chamado.
Exemplo:
publicclassPessoa{Stringnome;publicPessoa(Stringnome){this.nome=nome;}publicstaticvoidmain(String[]args){imprime("Teste");// >>> TesteObjectp1=newPessoa("Joao");imprime(p1);// >>> Pessoa???????Objectp2=newPessoa("Maria"){publicStringtoString(){returnthis.nome;}};imprime(p2);// >>> MariaObjectp3=newPessoa("Roberto"){publicStringtoString(){// super.toString() o super faz referência a classe estendida mais próxima que possua o método toString, que é a Objectreturnsuper.toString()+" "+this.nome;}};imprime(p3);// >>> Pessoa??????? Roberto}publicstaticvoidimprime(Objecto){System.out.println(o.toString());}}
Mateus_Malaquias1
Além do que o @diego12 explicou, o método toString() por default vai ser sempre chamado quando você for for apresentar alguma coisa para o usuário ou concatenar valores com outra string.