Si 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)???

Stiven Trujillo

Stiven Trujillo

Pregunta
studenthace 4 años

Si 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)???

5 respuestas
para escribir tu comentario
    Ariel Quediman

    Ariel Quediman

    studenthace 3 años

    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

    Jorge Cruz Perez

    studenthace 4 años

    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

    Stiven Trujillo

    studenthace 4 años

    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

    Stiven Trujillo

    studenthace 4 años

    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

    Jorge Cruz Perez

    studenthace 4 años

    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 :)

Curso de Java SE Orientado a Objetos

Curso de Java SE Orientado a Objetos

Programa aplicaciones en Java usando orientación a objetos. Aprende a utilizar clases, herencia, polimorfismo, interfaces, encapsulamiento, métodos, modularidad y más, simulando la administración de citas médicas.

Curso de Java SE Orientado a Objetos
Curso de Java SE Orientado a Objetos

Curso de Java SE Orientado a Objetos

Programa aplicaciones en Java usando orientación a objetos. Aprende a utilizar clases, herencia, polimorfismo, interfaces, encapsulamiento, métodos, modularidad y más, simulando la administración de citas médicas.