que recibe un método y que necesita para funcionar. Ejemplo:
public class Matemáticas {
public double factorial(int n){
double resultado;
for (resultado=n;n>1;n--) resultado*=n;
return resultado;
}
...
public static void main(String args[]){
Matemáticas m1= new Matemáticas();
double x=m1.factorial(25);//Llamada al método
}
En el ejemplo anterior, el valor 25 es un argumento requerido por el método factorial para que éste devuelva el resultado (que será el factorial de 25). En el código del método factorial, este valor 25 es copiado a la variable n, que es la encargada de almacenar y utilizar este valor.
Se dice que los argumentos son por valor, si la función recibe una copia de esos datos, es decir la variable que se pasa como argumento no estará afectada por el código.
Ejemplo:
class prueba {
public void metodo1(int entero){
entero=18;
...
}
...
public static void main(String args[]){
int x = 24;
prueba miPrueba = new prueba();
miPrueba.metodo1(x);
System.out.println(x); //Escribe 24, no 18
}
Este es un ejemplo de paso de parámetros por valor. La variable x se pasa como argumento o parámetro para el método metodo1, allí la variable entero recibe una copia del valor de x en la variable entero, y a esa copia se le asigna el valor 18. Sin embargo la variable x no está afectada por esta asignación.
Sin embargo en este otro caso:
class prueba {
public void metodo1(int[] entero){
entero[0]=18;
...
}
...
public static void main(String args[]){
int x[]={24,24};
prueba miPrueba = new prueba();
miPrueba.metodo1(x);
System.out.println(x[0]); //Escribe 18, no 24
Aquí sí que la variable x está afectada por la asignación entero[0]=18. La razón es porque en este caso el método no recibe el valor de esta variable, sino la referencia, es decir la dirección física de esta variable. entero no es una replica de x, es la propia x llamada de otra forma.
Los tipos básicos (int, double, char, boolean, float, short y byte) se pasan por valor. También se pasan por valor las variables String. Los objetos y arrays se pasan por referencia.
No hay comentarios:
Publicar un comentario