Me pregunto, ¿todas las variables locales se vuelven estáticas si las declaramos en un método estático?¿Las variables locales en métodos estáticos también son estáticas?
por ejemplo:
public static void A(){
int x [] = {3,2};
changeX(x);
for (int i = 0; i< x.length; i++){
System.out.println(x[i]); // this will print -1 and 1
}
}
private static void changeX(int[] x){
x[0] = -1;
x[1] = 1;
}
Por lo que yo entiendo que Java es siempre paso por valor, pero ¿por qué el estado de X ha cambiado después de haber hecho el CambiarX llamar? ¿Alguien puede explicar eso por favor? y ¿alguien puede explicar cómo maneja Java las variables estáticas en términos de asignación de memoria? y qué pasa si pasamos una variable estática a una función como parámetro (sé que las personas normalmente no lo harán)
Esto no tiene sentido ya que la estática no tiene significado para las variables locales. Son locales, de período, ya sea que estén en un método estático o en un método de instancia. –
Es una variable local o temporal. Una vez que la función finaliza, no tiene alcance. – Subs
Array es un objeto en Java. La referencia de la matriz se pasa a changeX cuando se invoca, por lo que sus elementos en la matriz se pueden cambiar dentro de changeX. –