Duvida com o toString()

4 respostas
Meth

Object objeto = new object(); System.out.println(objeto);


A linha escrita pelo System.out é o endereço da memória?

4 Respostas

renamed

Não, é o mesmo que

getClass().getName() + '@' + Integer.toHexString(hashCode());

Veja aqui.

Meth

hashCode() seria entao o endereço na memoria?

renamed

Não. Java não lhe dá a oportunidade de mexer diretamente com memória.

Você pode consultar sobre hashing em inglês ou em português.

ViniGodoy

Se a classe não sobrescrever o hashCode padrão pode ser que o hashCode seja o endereço de memória:

http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html#hashCode()

Agora, você nunca saberá se é o endereço de memória do SO, ou do Heap da VM. Além disso, vale lembrar que muitas classes sobrescrevem o método hashCode, portanto, a chamada não deve ser usada para esse propósito.

Finalmente, pode ser que um usuário rodando o mesmo programa em outra VM tenha um valor diferente para hashCode, como um id sequencial, por exemplo, que nada tem a ver com a memória.

Criado 15 de outubro de 2010
Ultima resposta 15 de out. de 2010
Respostas 4
Participantes 3