Noticias Weblogs Foros Wiki Código

Meta-Info

¿Que es?

Planeta Código es un agregador de weblogs sobre programación y desarrollo en castellano. Si eres lector te permite seguirlos de modo cómodo en esta misma página o mediante el fichero de subscripción.

rss subscripción

Sponsors

Puedes utilizar las siguientes imagenes para enlazar PlanetaCodigo:
planetacodigo

planetacodigo

Si tienes un weblog de programación y quieres ser añadido aquí, envíame un email solicitándolo.

Idea: Juanjo Navarro

Diseño: Albin

Preparando SCJP

Asignaciones – Paso de Parámetros en Java

Septiembre 28th, 2011 - [Enlace local]

El paso de parámetros en Java se hace siempre por valor, ya se trate de un tipo primitivo o de un tipo de referencia, el método trabaja con una copia de la variable.

En el caso de una variable de tipo primitivo, si dentro del método se  modifica la variable, estamos modificando la copia y no la variable original.

En el caso de variables de referencia, si se modifica la variable dentro del método se está modificando una copia de la referencia y no la referencia original. Eso sí, al tener una copia de la referencia que apunta al mismo objeto, sí se puede cambiar el contenido de éste.

Veámoslo con un ejemplo:

class PasoParametros{

    public static void main(String[] args){

    //Para un entero comprobamos que se modifica la copia, despues vuelve a su valor orig.
        int entero = 100;
        System.out.println("Antes de modificar: " + entero);
        modificar(entero);
        System.out.println("Despues de modificar: " + entero);

    //Para un array de un entero, comprobamos que con la copia de la referencia
    //podemos cambiar su contenido.
        int[] array = new int[1];
        array[0] = 100;
        System.out.println("\nAntes de modificar: " + array[0]);
        modificarContenido(array);
        System.out.println("Despues de modificar: " + array[0]);

    //Para el mismo array de entero, comprobamos que no podemos modificar la referencia.
        System.out.println("\nAntes de modificar: " + array[0]);
        modificar(array);
        System.out.println("Despues de modificar: " + array[0]);

    }

    static void modificar(int e){
        e = 200;
        System.out.println("Dentro de modificar: " + e);
    }

    static void modificarContenido(int[] a){
        a[0] = 200;
        System.out.println("Dentro de modificarContenido: " + a[0]);
    }

    static void modificar (int[] a){
    //Creamos un nuevo array "b" y hacemos que "a" apunte a este nuevo array.
    //Funciona solo dentro del metodo, puesto que "a" aquí es una copia.
        int[] b = new int[1];
        b[0] = 300;
        a = b;
        System.out.println("Dentro de modificar: " + a[0]);
    }

}

Resultado de la ejecución:


Filed under: Estudio, Tema 3 Tagged: Certificacion Java, Java, ocpjp, Paso de Parámetros, Programacion, SCJP, Tecnologia

» Leer más, comentarios, etc...

Información legal y técnica