Ponteiro ou Referência

3 respostas
D

E ai, pessoal.

Tenho uma dúvida que está dando o que falar. Muitas pessoas dizem que o Java não tem ponteiro de memória, pq ele não possui uma aritmética extendida como a linguagem C. Mas se criarmos uma “referência” para algum objeto esta não estaria apontando para o mesmo??

Vlw,

Discutam ae…

3 Respostas

T

Este assunto já é velho. Um professor meu falava a mesma coisa que você.
No entanto no livro de preparação para certificação Java 5 da Kathy Sierra e Bert Bates elas dizem que o Java tem é apenas referencias a objetos.

Nós temos variáveis de referencia e as referencias em si. As variáveis de referencia não são chamadas de ponteiros, portanto o Java não tem ponteiros. :roll:

ViniGodoy

Isso já foi muito discutido por aqui.

Veja a conversa por lá.

Basicamente, depende do que você chame de ponteiro.

O conceito do Java é mais próximo das referências do C++ do que o de ponteiros.

O conceito de ponteiros no C ou C++ é justamente isso: um endereço de memória de um dado. Você pode somar números inteiros a ele e desloca-lo. Você pode apontar para dados que não tem qualquer relação com o tipo do ponteiro em si, afinal, você não está apontando objetos, mas sim memória. Esse conceito, o Java não tem.

Já uma referência é um apelido dado a um objeto. Não se pode “somar” nada a uma referência, pois ela deve apontar um objeto válido, respeitar as regras de cast, etc. Para todos os efeitos, ela é o objeto ao qual referência.

Mas é claro, por baixo dos panos, tudo vira ponteiro. Mas acho que discussões conceituais devem se basear no conceito em torno da técnica, não em como a técnica é implementada.

Por fim, é bom ressaltar que dizer que o java tem ponteiros pode gerar um pânico injustificado. Os pepinos envolvendo ponteiros: memory leaks e dangling pointers não acontecem em Java. O garbage collector impede que um objeto apontado seja deletado, ao mesmo tempo que garante a remoção da memória de quem não tem referência nenhuma.

LPJava

o vinny disse tudo :D. show!!

Criado 4 de outubro de 2007
Ultima resposta 4 de out. de 2007
Respostas 3
Participantes 4