Java - Problema Simple con Java

 
Vista:
sin imagen de perfil

Problema Simple con Java

Publicado por Hugo (2 intervenciones) el 13/11/2016 19:47:14
Bueno estaba practicando con java y me encontré con este inconveniente que no entiendo
El código es simple:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void main(String[] args) {
        List<Integer> a = new ArrayList<Integer>();
        a.add(new Integer(2));
        String s = "";
 
        agregar(a,s);
        //SALIDA
        System.out.println("array:"+a.toString()+"-S:"+s);
    }
static void agregar(List<Integer> a ,String s){
        List<Integer> j=a;
        String k = s;
        k="Hola Mundo";
        j.add(new Integer(3));
    }

Y me da como resultado:
array:[2, 3]-S:

Bueno mi pregunta es por que en salida el lista A termina con los 2 elementos ?
no supone que lo que pasa en un método solo pasa en ese método?

Bueno espero que me puedan ayudar con esto que no entiendo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 87
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Problema Simple con Java

Publicado por Tomas (76 intervenciones) el 13/11/2016 20:41:33
Tardé un poco en darme cuenta, pero creo que lo que esta pasando, my friend :), es que, como en cualquier lenguaje orientado a objetos, en el método estas guardando la REFERENCIA EN MEMORIA del List<> A en en List<> J, es decir , solo le diste otro nombre al List<> A, que por consiguiente tambien está ocupando espacio en memoria, hasta que no haya referencia al List<> J, entonces el recolector de basura de Java se encarga de eliminarlo de memoria.
Si querias hacer otro List<> J independiente, adentro del metodo, tenias que hacer un new List<> J , adentro del metodo, es decir NO asignarle la REFERENCIA EN MEMORIA de A

Ahora, NO pasa lo mismo con los tipos PRIMITIVOS (int, boolean, float etc), cuando hagas un:
int x = 2;
int a =0
x=a ---->> Aqui SÍ se sobreescribe el valor de x con el de a.

Si me equivoco , que alguien me corrija :3.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Problema Simple con Java

Publicado por Hugo (2 intervenciones) el 13/11/2016 22:23:28
Muchas gracias por responder, me servido mucho.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar