El siguiente segmento de código Java es de un examen de práctica de AP Computer Science.Configuración de la variable Java String: ¿referencia o valor?
String s1 = "ab";
String s2 = s1;
s1 = s1 + "c";
System.out.println(s1 + " " + s2);
La salida de este código es "abc ab" en BlueJ. Sin embargo, una de las posibles opciones de respuesta es "abc abc". La respuesta puede ser dependiendo de si Java establece la referencia de cadena como tipos primitivos (por valor) o como Objetos (por referencia).
Para ilustrar mejor esto, veamos un ejemplo con tipos primitivos:
int s1 = 1;
int s2 = s1; // copies value, not reference
s1 = 42;
System.out.println(s1 + " " + s2); // prints "1 42"
Pero, decir que tuvimos CuentaBancaria objetos que mantienen saldos.
BankAccount b1 = new BankAccount(500); // 500 is initial balance parameter
BankAccount b2 = b1; // reference to the same object
b1.setBalance(0);
System.out.println(b1.getBalance() + " " + s2.getBalance()); // prints "0 0"
No estoy seguro de cuál es el caso de Strings. Técnicamente son objetos, pero mi compilador parece tratarlos como tipos primitivos al establecer variables entre sí.
Si Java pasa variables String como tipo primitivo, la respuesta es "abc ab". Sin embargo, si Java trata las variables String como referencias a cualquier otro objeto, la respuesta sería "abc abc"
¿Cuál crees que es la respuesta correcta?
¿Has visto la documentación de String? ¿Dice si es una clase o un primitivo? – DJClayworth
Es posible que desee leer el [javadoc] (http://download.oracle.com/javase/6/docs/api/java/lang/String.html) mientras responde sus preguntas. –
'System.out.println (s1 +" "+ s2); // imprime "1 42" 'no es verdadero ... imprime' "42 1" ' – whytheq