Parámetros como valor o referencia
En Java, todos los parámetros de método se pasan por valor, lo que significa que se copia el valor de la variable en el parámetro del método. La diferencia radica en cómo se manejan los valores de los tipos de datos primitivos y las referencias a objetos.
-
Parámetros de tipos de datos primitivos (valor real):
Cuando pasas una variable de un tipo de dato primitivo (comoint
,double
,boolean
, etc.) como argumento a un método, se pasa una copia del valor real de la variable. Cualquier cambio que realices en ese valor dentro del método no afectará la variable original fuera del método.Ejemplo:
public static void modificarValor(int numero) { numero = numero + 10; } public static void main(String[] args) { int x = 5; modificarValor(x); System.out.println("Valor de x: " + x); // Output: Valor de x: 5 }
-
Parámetros de referencias a objetos (valor de referencia):
Cuando pasas una referencia a un objeto (por ejemplo, unArray
o una instancia de una clase) como argumento a un método, se pasa una copia de la referencia al objeto, no una copia del objeto en sí. Esto significa que cualquier modificación en el objeto al que apunta la referencia dentro del método afectará al objeto original fuera del método.Ejemplo con un
Array
:public static void modificarArray(int[] arr) { arr[0] = 100; } public static void main(String[] args) { int[] array = {1, 2, 3}; modificarArray(array); System.out.println("Primer elemento del array: " + array[0]); // Output: Primer elemento del array: 100 }
Es importante entender esta distinción, ya que puede llevar a resultados inesperados si no se tiene en cuenta. Los tipos de datos primitivos se pasan por valor, mientras que las referencias a objetos se pasan por valor de referencia, lo que permite la modificación de los objetos originales dentro de los métodos.