Chamada de toString() em StringBuffer e String

Beleza mocada?

Minha dúvida é a seguinte, tenho o código:

String s1 = "abcd";
StringBuffer sb1 = new StringBuffer("abcd");
int val = 6;
System.out.println(s1 + val);
System.out.println(sb1 + val);

A resposta é:

“O código falha na compilação porque a conversão para um tipo String não é aplicada a StringBuffer.”

Mas a classe StringBuffer também possui o método public String toString() e sempre que tenho um objeto dentro de um System.out.print o toString() é chamado implicitamente.

Então, o que está errado?

donatinho

O problema é que você não está passando o StringBuffer para o println(), você está passando para o +, e + só aceita tipos primitivos ou String, você não pode “somar” ou “concatenar” dois objetos quaisquer, somente String, o + não chama o toString() automaticamente, seria como fazer isso:

[code]JButton btn = new JButton();
JButton btn2 = new JButton();

btn+bnt2; //hã???[/code]

pra funcionar teria que ser isso:

8O

Cara, valeu pela aula, realmente não sabia isso!!!

E o pior que eu pensava que dominava java antes de fazer a prova para a certificação.

Abraços

donatinho

:grin: :cool: