Isto é um ponteiro em java?

5 respostas
A
private void copying(Pais[] population, Pais[] Copy){
		for(int i = 0; i < Testn.size; i++){
			Copy[i] = population[i];
		}
	}

Quando eu faço isso :

[color=red]Copy[i] = population[i];[/color]

todas as atualizações que faço no population acontecerão no Copy mesmo que eu não aplique o método diretamente a ele?
O seja funciona como um ponteiro?

Obrigda desde ja!

5 Respostas

A

Alguém ajude por favor!?

WRYEL

qualquer valor que não seja um primitivo em java, quando rolar atribuição, será no ponteiro.

logo, você está atualizando a ponteiro de Copy[i] para apontar para population[i];

se fosse por exemplo, um int[x] = 9, seria atribuição de novo valor. Agora, sé você tentar substituir um int[] por outro int[] estará trocando para onde o ponteiro aponta.

Se não fui claro, me fala, que tento explicar melhor :o)

Rodrigo_Sasaki

Galera, só tomem cuidado com os termos usados.

Duas variáveis referenciando uma mesma instância, não são a mesma coisa que um ponteiro.

A

Entendi mais ou menos…hueuhe…
É o seguinte, eu tenhho que guardar valores no incio, depois atualizo o meu population para comparar com o antigo. Como faria isso ?
Por que no caso population tem varios atributos=P

saoj

Esquece ponteiro em Java. Vc não tem acesso a eles. Por isso que chama de referencia e não ponteiro.

String s = new String(&quot;asfasdf&quot;);

s é uma referencia que guarda um endereco de memoria onde o objeto está alocado.

É IMPOSSÍVEL saber qualquer coisa sobre essa referencia ou fazer qualquer coisa com ela.

Vc só sabe que ela existe.

Então quando vc faz:

String s1 = new String(&quot;asdfasdf&quot;);
String s2 = s1;

Vc copiou a referencia s1 em cima de s2, ou seja, agora ambos s1 e s2 apontam para o mesmo objeto em memória.

Diferente de:

String s1 = new String(&quot;a&quot;);
String s2 = new String(&quot;a&quot;);

São dois objetos em dois enderecos diferentes em memória. Mas eles são iguais do ponto de vista lógico.

Em C vc pode manipular os ponteiros, assim:

String s1 = new String(&quot;a&quot;);

s1++; // incrementa o endereco na memória... agora quando vc for acessar esse endereco o programa vai muito provavelmente explodir.

PS: Depois dessa explicacao ninja, se não entendeu se mata. :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:

Por isso que:

String s1 = new String(&quot;asdfasdf&quot;);
String s2 = s1;
System.out.println(s1 == s2); // =&gt; true
System.out.println(s1.equals(s2)); // =&gt; true

String s1 = new String(&quot;a&quot;);
String s2 = new String(&quot;a&quot;);
System.out.println(s1 == s2); // =&gt; false
System.out.println(s1.equals(s2)); // =&gt; true

String s1 = &quot;a&quot;;
String s2 = &quot;a&quot;;
System.out.println(s1 == s2); // =&gt; true por causa do pool de Strings da JVM
Criado 25 de maio de 2012
Ultima resposta 25 de mai. de 2012
Respostas 5
Participantes 4