Olá Luciano, tudo bem?
Vamos imprimir um objeto do tipo Integer
no console? Como fazer?
System.out.println(new Integer(3));
Desta forma, o println
irá chamar pra gente o método toString
do que estamos pedindo pra ele imprimir.
Mas, o que será impresso pra gente no console? O número três, correto? Vamos analisar a implementação do toString
padrão (herdada por todas as classes implicitamente):
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
Podemos ver que a implementação original de toString
, retorna pra gente o nome da classe seguido do seu Hashcode. É isso que temos ao executar toString
de Integer
? Não, temos um número! No nosso caso o número três. Portanto, podemos concluir que o método toString
de fato foi reescrito. Tudo bem? :)
Agora, Crisostomo Kolling, em relação ao seu exemplo, tá certíssimo! Você passou uma String
pro método parseInt
e funcionou. Depois tentou passar uma inválida e recebeu um NumberFormatException
. Só tenho uma única recomendação para você:
Evite criar uma String
desta forma:
String nome = new String("Leonardo");
Por que? Quando criamos uma String
chamando o construtor, ele irá criar para nós uma nova instância da mesma String que foi passada por argumento do construtor. Raríssimos são os casos que você vai precisar de uma nova instância da mesma String. Portanto, sempre que for criar uma String
faça:
String nome = "Leonardo";
OBS: Mais detalhes sobre isso:
http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#String(java.lang.String)
Tudo bem?
Forte abraço!