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.
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}
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!