Ponteiro em java?

4 respostas
GustavoLaguna

Acho que não existe ponteiro em java. O que quero é passar um argumento por Valor e não por Referencia.

public int somaDeAcrescimo(int a, int b)
{
      a++;
      b++;
      return (a + b);
}

Como devo fazer para que quando saisse do método, a variavel a e b tivessem seu valor alterado?

OBS: O método é sem lógica mesmo, foi só pra colocar como exemplo.

4 Respostas

peczenyj

Java não tem este conceito de passagem de parametros por referência
Editado: tem sim, vc pode passar a referência a uma matriz, mas não vi até agora referência a 2 inteiros, algo como uma função swap que troque os valores de 2 inteiros (int).

Vc pode fazer assim
public class Exemplo{

	public int valor;

	public Exemplo(int valor){
		this.valor = valor;
	}

	public int getValor(){
		return this.valor;
	}

	public int Incremento(){
		return ++this.valor;
	}

	public int somaDeAcrescimo(Exemplo B)
	{
	    return (this.Incremento() + B.Incremento());
 	}

	public static void main (String args[]){
		Exemplo A = new Exemplo(1);
		Exemplo B = new Exemplo(2);

		System.out.println("A = " + A.getValor() + " B = "+ B.getValor());
		System.out.println("O resultado de somaDeAcrescimo eh " + A.somaDeAcrescimo(B));
		System.out.println("A = " + A.getValor() + " B = "+ B.getValor());
	}
}

Mas não existe essa entidade "ponteiro" que permita acessar uma variavel através de um endereço de memória, que é o que a passagem por referência faz. Editado: Tem um pacote da sun que permite fazer umas coisinhas mas... sei la... eu não usaria... :twisted:

Entretanto vc pode usar o encapsulamento de dados, que ao meu ver é muito melhor e menos confuso.

A

Gustavo, nao eh que java nao tem ponteiro, ele apenas esconde de vc. Quando vc passa um parametro num metodo em java, se o valor dele for alterado vai ser refletido na variavel original. Ou seja vc sempre ta passando seus params por referencia(eu acho que eh referencia e nao valor). Tomara que eu nao tenha me engando :).

Alberto

peczenyj

O ponteiro em java eh chamado referência

Foi discutido aqui:
http://www.guj.com.br/posts/list/23110.java

Aqui tem um exemplo bacana
http://cslibrary.stanford.edu/106/

GustavoLaguna

Valeu Pessoal. Tirei a minha duvida.

Abraços

Criado 9 de abril de 2006
Ultima resposta 10 de abr. de 2006
Respostas 4
Participantes 3