Tipos de referencia

Primitivos vs Tipos de referencia

En el último tutorial aprendiste que usamos tipos primitivos para guardar valores simples como números, valores booleanos, o personajes singles.

En contraste, usamos tipos de referencia para guardar objetos complejos, como objetos de datos, o mensajes de correo. Estos son objetos complejos.

Tipos primitivos vs referencia

Ahora, en Java tenemos 8 tipos primitivos que has visto antes, todos los otros tipos son tipos de referencia. Déjame mostrarte un ejemplo.

Ejemplo: tipo primitivo

Entonces, aquí en este programa, primero voy a declarar un tipo primitivo, digamos byte age es igual a 30.

Ejemplo: tipo primitivo

byte age = 30;

Programa base

public class Main {
    public static void
    main(String[] args) {
    byte age = 30;
}
}

Ahora: tipo de referencia

Ahora, declarar y inicializar un tipo de referencia es un poco diferente de un tipo primitivo. Déjame mostrarte. Entonces, vamos a escribir date, ahora aquí en esta caja de herramientas, que se llama JAVA, podemos ver varias clases que tienen date en su nombre.

JAVA y Date

public class Main {
    public static void main(String[] args) {
    byte age = 30;
    Date ( ) // java.uti;
}
}

JAVA y Date

import java.util.Date;

public class Main {
    public static void main(String[] args) {
    byte age = 30;
    Date ( ) // java.uti;
}
}

Programa con import

import java.util.Date;

public class Main {
    public static void main(String[] args) {
        byte age = 30;
    }
}

new para alojar memoria

import java.util.Date;

public class Main {
    public static void main(String[] args) {
        byte age = 30;
        Date ahora= new Date();
    }
}

Diferencia de memoria

Cuando declaramos tipos primitivos, no necesitamos alojar memoria. La memoria es alocada y liberada por el environmento java, pero cuando tratamos de tipos de referencia, debemos siempre alojar memoria. Ahora, no tenemos que liberar esta memoria, el environmento java automáticamente se va a cuidar de eso. Entonces, usamos el nuevo operador, y luego repitimos el nombre de nuestra clase, en este caso date, y luego agregamos paréntesis, seguido por un semicolon.

Instancia y clase

En este ejemplo, este variable que hemos definido aquí, es una instancia de la clase de date. Entonces estas clases definen templates o blueprints para crear nuevos objetos, nuevas instancias. Como otro ejemplo, podemos tener una clase llamada human, y podemos tener objetos como john, bob, mary, and so on.

Un objeto es una instancia de una clase.

Operador punto

Estos objetos o clases tienen miembros a los que podemos acceder mediante el operador punto. Podemos escribir “punto” y estos son todos los miembros definidos en esta clase o en este objeto.

Programa base (para comparar)

import java.util.Date;

public class Main {
    public static void main(String[] args) {
        byte age = 30;
        Date ahora= new Date();
    }
}

age dot no funciona

age. <- no va a funcionar 

Antes: sin imprimir

import java.util.Date;

public class Main {
    public static void main(String[] args) {
        byte age = 30;
        Date ahora= new Date();
    }
}

Después: imprimir el objeto

import java.util.Date;

public class Main {
    public static void main(String[] args) {
        byte age = 30;
        Date ahora= new Date();
        System.out.println(ahora);
    }
}

Atajo: sout

En lugar de escribir todo esto, podemos usar uno de estos fragmentos de código: escribimos “s-o-u-t” y presionamos la tecla Tab. Esto genera este fragmento de código. Bien, ahora pasemos nuestro objeto de datos aquí.

Tengan en cuenta que no he encerrado esta variable entre comillas dobles, ya que es una cadena. Si ejecutan este programa, lo veremos en la terminal.

Error común (etiqueta, no valor)

No queremos esto; queremos el valor de nuestro objeto de datos, no una etiqueta. Lo puso asi por error:

System.out.println("ahora"); 

Corrección

Así que, eliminemos las comillas y ejecutemos el programa de nuevo.

System.out.println(ahora);

Programa completo final

import java.util.Date;

public class Main {
    public static void main(String[] args) {
        byte age = 30;
        Date ahora= new Date();
        System.out.println(ahora);
    }
}

Resultado

Aquí está la fecha y hora actuales en mi equipo.