paso de argumentos por referencia (paso de la referencia)

Dícese cuando al método se le pasa una referencia al dato. Aunque el método no puede alterar la referencia propiamente dicha, sí puede alterar aquello a que se refiere la referencia.

Se copia la referencia; pero se comparte el objeto.

Java pasa por valor todo aquello que no sean tipos primitivos: arrays y objetos.

modificación de un objeto pasado

void a(int[] datos) {            // a recibe la referencia a un array

    datos[0] = 1;                // a modifica el array compartido

}

void b() {

    int[] datos = new int[2];

    datos[0] = 0;                    // la primera posición contiene 0

    a(datos);                        // pasamos una referencia al array

    System.out.println(datos[0]);    // la primera posición contiene 1

}

 

copia local

void a(int[] datos) {             // a recibe la referencia a un array

    datos = new int[2];           // a fabrica su propia copia

    datos[0] = 1;                 // a modifica su array

}

 

void b() {

    int[] datos = new int[2];

    datos[0] = 0;                 // la primera posición contiene 0

    a(datos);                     // pasamos a a una referencia al array

    System.out.println(datos[0]); // la primera posición contiene 0

}          

 

Temas relacionados

115. Método [method] (concepto)