Como fazer para alterar num método um tipo primitivo?

6 respostas
masdeval

Como fazer para alterar num método um tipo primitivo?

6 Respostas

louds
int c;
c = 1;
Paulo_Silveira

louds

acho que ele quis dizer como mudar by reference.

cara, nao da pra fazer isso em java

private void mudaInt(int x) {

x = 3;

}

quando sair dai, o x mandado continua o mesmo, ja que a chamada de metodo em java eh sempre por valor (e no caso de objetos o valor eh o endereco).

voce nao deveria estar precisando desse tipo de coisa se estivesse bem OO seu sistema. ou entao eh um caso SUPER particular. voce pode mudar o retorno do metodo apra voltar um int, ou entao, que eh algo TERRIVEL e ABOMINAVEL, passar um int[] x como argumento, ai o de fora eh mudado, ja que a array eh um objeto.

Hempx

Muda um primitivo usando as classes Integer, Double, Float…
ae da para voce simular uma passagem por referencia…

java.lang.*

Paulo_Silveira

“Hempx”:
Muda um primitivo usando as classes Integer, Double, Float…
ae da para voce simular uma passagem por referencia…

Oi Hempx.

nao vai funcionar porque as classes wrappers sao imutaveis, como a String. Mas essa ideia funciona se voce mesmo criar sua classe wrapper mutavel.

D
Eu vi em um lugar que a pessoa passava a varíavel atraves de um vetor com um elemento.
int[] y = {6};
  mudaInt(y);

private void mudaInt(int[]  x) {
  x[0] = 3;
}

Mesmo assim, isso não é muito "estético".

Daniel_Quirino_Olive
"Dharis":
Eu vi em um lugar que a pessoa passava a varíavel atraves de um vetor com um elemento.
int[] y = {6};
  mudaInt(y);

private void mudaInt(int[]  x) {
  x[0] = 3;
}

Mesmo assim, isso não é muito "estético".


Isso funciona porque arrays são objetos, logo o que é passado para o método é a cópia do endereço onde o array pode ser encontrado (ou seja, no fundo, é uma passagem por referência). Assim, se você alterar os valores do seu array dentro de um método, estas modificações serão refletidas fora do método. ;)

Criado 20 de novembro de 2003
Ultima resposta 21 de nov. de 2003
Respostas 6
Participantes 6