ayuda para entender la rta de este ejercicio

Iniciado por JuanLopezla, 1 Agosto 2012, 16:18 PM

0 Miembros y 1 Visitante están viendo este tema.

JuanLopezla

En un final me tomaron este ejercicio, con respuestas multiplechoise:

public class A {
static int x[]={1,2};
int y[];

public void f(int z[]){
z[1]+=2;
}

void g(){
A a = new A();
a.x[0]++;
}

}


public static void main(String[] args) {
        A b = new A();
        b.y=b.x;
        b.f(b.y);
        b.g();
        System.out.println(b.x[0] +""+b.x[1]);
        System.out.println(b.y[0] +""+b.y[1]);

    }

Rtas para el primer println:  1 2  / 1 4  / 2 2  / 2 4
Rtas para el segundo println:  1 2  / 1 4  / 2 2  / 2 4

Yo elegi para el primero 2 2 , y para el segundo 1 4 ... pero la respuesta correcta era 2 4 en los dos casos. No logro entender porque es asi, por favor necesito que alguien me aclare el ejercicio. Desde ya muchas gracias.

ChavalChavito

A b = new()A;
instancia la clase A y la variable b hace referencia a la misma
b.y=b.x;
x[] es una variable d referencia y apunta a una direccion en memoria dond esta el vector {1,2}.. y[] tb es d referencia entnces lo q hago es asignarle la direccion d memoria q apunta x a y.. y los dos qedan apuntando al vector {1,2}
b.f(b.y);
este método hace que el vector valga {1,4}
b.g();
este método hace que el vector valga {2,4}

JuanLopezla

ahhh esta, no entendia bien que "x" e "y" guardaban los mismos valores, osea al modificar "y" se modifica "x" tambien. Genial! Muchas gracias, saludos!