Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
4
respuestas

variables vs objetos

Buenos dias; como estan? en el curso Java JRE y JDK: compile y ejecute su primer programa; Diego menciono que en JAVA las variables reciben o guardan un valor; es decir que no apuntan aun lugar en la memoria, sino que almacenan el valor.

Durante el curso de Java OO: Entendiendo la Orientación a Objetos; Diego menciona que cada vez que se crea un objeto (instancia de una clase); en este caso si se genera un ID o puntero en la memoria.

estas dos afirmaciones son correctas tanto para variables como objetos? o la indicada en el *curso Java JRE y JDK *no es del todo correcta?

gracias por su ayuda y la enseñanza

4 respuestas

aca me respondo solo; ya que imprime "distintos"

public class TestReferencia {
    public static void main(String[] args) {
        Cuenta primeraCuenta =  new Cuenta();  // solo se reservo un solo lugar en la memeoria y a ese lugar se le asignaron 2 cuentas
        primeraCuenta.saldo = 200;
        System.out.println(primeraCuenta.saldo);

        Cuenta segundaCuenta =  primeraCuenta;
        segundaCuenta.saldo=100;
        System.out.println(segundaCuenta.saldo);
        System.out.println(primeraCuenta.saldo);

        System.out.println(primeraCuenta);  // las dos hacen referencia a un mismo lugar en la memoria
        System.out.println(segundaCuenta);

        int valor1 = 5;
        int valor2=valor1;
        valor2=3;
        if (valor1==valor2) {
            System.out.println("son iguales");

        }else {
            System.out.println("distintos");
        }
    }

}

Hola Juan.

Por lo que he investigado, las dos afirmaciones son correctas.

Quizá lo que falta aclarar es que las guardan un valor y no apuntan a una dirección son las variables primitivas (float, int, etc.). En cambio, las variables del tipo class (igual que los arrays) apuntan a una dirección en la memoria.

Dado esto, la situación de la asignación donde se asigna una variable a otra, tiene un comportamiento diferente si las variables en cuestión son del tipo primitivo o del tipo referencia.

Te dejo una comprobación que hice para aclararme el asunto en este post que plantee la misma duda.

https://app.aluracursos.com/forum/topico-duda-valor-o-referencia-160717

Saludos.

Hola Juan, un gusto saludarte.

Como menciona Tracy, los tipos de datos primitivos cuando son asignados, estos guardan su valor, en la memoria Stack de Java, pero cuando se utiliza los de tipo de datos de clase o Wrapper o arrays, se esta instanciando un objeto, es decir una referencia en memoria que esta dirigida a la memoria Heap.

Te comparto un video, donde se explica mejor la memoria Stack y Heap -> https://www.youtube.com/watch?v=zSRO_b4y2cA&t=3s

Espero te ayude, Saludos.

Gracias Luis. Voy a ver el vídeo. Muy amable.