lunes, 31 de mayo de 2010

Parámetros en Java

Últimamente en el trabajo he escuchado decir:
"Que pasa con Java, aqui estoy asignando el valor y en este método ya no esta el valor, haber no que muy muy Java me esta fallando" 
Y aunque no vi el código que señalaban, pensé que seguramente era por la manera en que implementaban el paso de los parámetros. Pero todos sabemos que Java sólo tiene UNA forma de pasar parámetros y esto es: Parámetros por valor.

Pero y ¿qué significa esto?..... veamos unos ejemplos.

public class ParametrosValor {

 public static void main(String [] args) {
  int numero=8;
  calculaNumero(numero);
  System.out.println(numero);
 }

 public static void calculaNumero(int num){
   num=10;
 }
}


Este ejemplo imprimirá "8". Y esto es porque la variable "num" es local y recibe una copia del valor de la variable numero que se envía como parámetro y el valor de la variable num nunca se modifica.

Ahora veremos el siguiente ejemplo:

public class ParametrosValor {

 public static void main(String [] args) {
  int[] arreglo = new int[1];
  arreglo[0] = 8;
  calculaNumero(arreglo);
  System.out.println(arreglo[0]);
 }

 public static void calculaNumero(int[] array) {
  array[0] = 10;
 }
}



Pero entonces lo que aquí imprime es un 10.  Lo que pasa en este ejemplo es que como estamos utilizando un arreglo y un arreglo es un objeto, las variables que apuntan a un objeto son sólo referencias a él. Entonces el método de calculaNumero  modifica el valor del objeto. Y es donde entran las confusiones porque Java no paso los parámetros por referencia. Al contrario, pasó el valor de la referencia.

Y si no me creen,  pruebenlo!! XD! Espero les sirva. Saludos

No hay comentarios:

Publicar un comentario