¿Ambito de la variable?
a ver si alguien me ayuda... En este programa, no debería salir por la consola "CAMBIADO" y no "original" ??????? no se ke ocurre... :__(
public class prueba {
static void cambia(String s){
s=new String("CAMBIADO");
}
public static void main(String[] args) {
String s=new String("original");
cambia(s);
System.out.println(s);
}
}
public class prueba {
static void cambia(String s){
s=new String("CAMBIADO");
}
public static void main(String[] args) {
String s=new String("original");
cambia(s);
System.out.println(s);
}
}
Te debe salir original.
EL PASO DE PARÁMETROS EN JAVA ES POR VALOR Y
NO POR REFERENCIA.
Mucha gente cree que el paso de parámetros en Java es por referencia. Puedes cambiar las propiedades
de un objeto pasado a un método pero no puedes
reasignarlo.
De forma que si en tu método en lugar de:
s= new String("Cambiado")
pones:
s="Cambiado"
la salida si debe ser Cambiado.
EL PASO DE PARÁMETROS EN JAVA ES POR VALOR Y
NO POR REFERENCIA.
Mucha gente cree que el paso de parámetros en Java es por referencia. Puedes cambiar las propiedades
de un objeto pasado a un método pero no puedes
reasignarlo.
De forma que si en tu método en lugar de:
s= new String("Cambiado")
pones:
s="Cambiado"
la salida si debe ser Cambiado.
dentro del metodo pongo s="Cambiado"
y sigue saliendo Original....
Alguna otra ayuda????
y sigue saliendo Original....
Alguna otra ayuda????
Efectivamente, error mio, estamos hablando de
objetos String y no hace falta recordar que ...
LOS OBJETOS STRING EN JAVA SON INMUTABLES.
Un String nunca cambia en Java.
Cuando realizas:
s="Cambiado"
en realidad lo que la máquina virtual de java está
haciendo es crear un nuevo objeto String con el
valor "Cambiado" y asignarlo a la variable de
referencia s. Esta haciendo lo mismo que realizabas
tu en un primer momento, y como te comente
anteriormente esto no funciona en Java.
Lo que puedes hacer es devolver un String en el
método y recibirlo en el String creado en el main.
Saludos.
objetos String y no hace falta recordar que ...
LOS OBJETOS STRING EN JAVA SON INMUTABLES.
Un String nunca cambia en Java.
Cuando realizas:
s="Cambiado"
en realidad lo que la máquina virtual de java está
haciendo es crear un nuevo objeto String con el
valor "Cambiado" y asignarlo a la variable de
referencia s. Esta haciendo lo mismo que realizabas
tu en un primer momento, y como te comente
anteriormente esto no funciona en Java.
Lo que puedes hacer es devolver un String en el
método y recibirlo en el String creado en el main.
Saludos.
