
Stiven Trujillo
PreguntaSi String es un Objeto en Java (según yo entiendo), por qué no pasa esto mismo con String (no apuntan a la misma dirección en memoria)???

Ariel Quediman
Creería que tiene que ver porque String es un objeto inmutable, por ende al crear un objeto String con el valor "Hola" y luego al asignarle un nuevo valor, se genera otro objeto String en memoria, es decir, no se está editando el objeto String que contiene "Hola", sino que al asignarle otro valor se esta generando otro objeto en memoria.

Jorge Cruz Perez
Ya entendi, Java lee el valor de hola y lo guarda como un nuevo objeto en saludo, eso esta pasando, no es que la dirección de memoria de hola pase a saludo. Java pasa por valor todas las variables que se ejecutan en una sola máquina virtual, fue lo que averigue, aunque si esta interesante tu planteamiento porque si genera algo de confusion, sin embargo haria lo mismo que tu, validarlo con la ejecución para ver si como creo que funciona funcionaria o no, saludos :)

Stiven Trujillo
Ejemplo:
class Main { public static void main(String args[]) { String hola = "hola"; String saludo = hola; System.out.println(hola); // hola System.out.println(saludo); // hola saludo = "Me cambiaron"; System.out.println(hola); // hola System.out.println(saludo); // me cambiaron } }

Stiven Trujillo
Gracias jorge, pero me refiero al apuntado en memoria, donde al instanciar un objeto, y al crear otro que apunte al objeto anterior, modificar a cualquiera de estos dos objetos, afectará a ambos, debido a que estos apuntan al mismo espacio en memoria donde se encuentra el objeto (memoria Heap).
Si String es objeto (o bueno una clase), y yo instancio un objeto String, al crear otro objeto String que sea igual al objeto String anterior, al modificar cualquiera de los dos, no se afectan ambos, por qué???

Jorge Cruz Perez
un objeto String, ej.
String obj
Si es un objeto, pero tambien puedes usar los metodos estáticos de la clase String usando directamente el nombre de la clase, no se si a eso te refieres? ya que un objeto de String y los metods estaticos de String no estan en la misma dirección saludos :)