Observe o exemplo:
//Classe ponto
class Ponto {
public float x,y;
.
.
.
}
//Classe principal
class Principal {
public static void main(String args[]) {
//preparacao das variaveis copia de objetos
Ponto pOriginal,pAlias,pCopia;
pOriginal=new Ponto((float)0.0,0.0f);
pAlias=pOriginal; //copiando atraves de atribuicao
pCopia=new Ponto(pOriginal.x,pOriginal.y); //copiando atributo por atributo
}
Preparacao das variaveis, copia de objetos:
pAlias e uma referência para o mesmo local de memória que pOriginal, por este motivo
quando pAlias é alterado, pOriginal se altera por “efeito colateral”, eles compartilham o mesmo
objeto pois a atribuição pAlias=pOriginal, copia o endereço de pOriginal.
Já pCopia, é o resultado de uma nova alocação de memória, portanto um novo endereço, um
objeto independente dos outros.
Comparacao de objetos:
pOriginal==pAlias e outras comparações equivalentes têm o significado de comparação do
endereço de memória e não do conteúdo.
pOriginal.x==pCopia.x tem o significado de comparação do valor desses atributos, assim
como uma comparação entre inteiros. Se esses atributos por sua vez fossem objetos, esta operação teria o significado de comparação entre endereços de memória dos objetos.
segunda-feira, 26 de novembro de 2007
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário