💾 No primitivos u objetos¶
En Java, los tipos de datos no primitivos son los tipos de datos de referencia.
Los datos primitivos, la variable y el datos se almacenan en la memoria en la pila(stack), sin embargo, los datos no primitivos, la variable de un tipo no primitivo o es null(ausencia de valor) o apunta al dato en la parte de la memoria Heap(montón)
Todos los tipos de datos no primitivos se implementan utilizando conceptos de objeto. Cada variable del tipo de datos no primitivo es un objeto.
Los tipos de datos no primitivos pueden utilizar métodos adicionales para realizar determinadas operaciones.
El valor predeterminado de la variable de tipo de datos no primitivos es nulo(null).
Es importante comprender que los tipos no primitivos guardan la dirección a la posición de memoria donde se encuentra el objeto
Valor null¶
En Java, null es un valor especial que representa la ausencia de un valor o la no inicialización de un objeto. Es un literal que se puede asignar a una variable de tipo referencia (como clases y arrays) para indicar que esa variable no apunta a ningún objeto en la memoria
//la variable s1 apunta a un objeto, pero la variable s2 no apunta a ningún contenido
String s1="Hola mundo";
String s2=null;
Enum en Java¶
El tipo enumerado es un tipo de datos especial que permite que una variable sea un conjunto de constantes predefinidas. Sirven para definir grupos de constantes como valores posibles de una variable. La variable debe ser igual a uno de los valores que se han predefinido para ella.
Debido a que son constantes, los nombres de los campos del tipo enum deberían estar en letras mayúsculas.
En Java, se define un enumerado utilizando la palabra clave enum seguido del nombre siguiendo la convención del nombrado de clases. Primera letra en mayúscula y CamelCase.
El objetivo principal es la acotación de datos y la claridad de lectura del código
Para crear un enum en Java, botón derecho en el paquete → new Java class y seleccionamos enum.
Ejemplo de enumerado:
public enum PuntosCardinales {
NORTE, SUR, ESTE, OESTE
}
public class Main {
public static void main(String[] args) {
PuntosCardinales myVar = PuntosCardinales.ESTE;
System.out.println(myVar);//Imprime "ESTE"
}
}
Otro ejemplo
public enum DiaSemana {
LUNES, MARTES,MIERCOLES,JUEVES,VIERNES,SABADO,DOMINGO
}
public static void main(String[] args) {
DiaSemana diaFavorito=DiaSemana.SABADO;
System.out.println(diaFavorito.name());//SABADO
System.out.println(diaFavorito);//SABADO
System.out.println(diaFavorito.ordinal());//5
DiaSemana peorDia=DiaSemana.LUNES;
System.out.println(diaFavorito==peorDia);//podemos hacer comparaciones
}
En los switch permiten una mejor legibilidad del código
public static void main(String[] args) {
DiaSemana dia = DiaSemana.MARTES;
switch (dia) {
case LUNES:
case MARTES:
case MIERCOLES:
case JUEVES:
case VIERNES:
System.out.println("A trabajar...");
break;
case SABADO:
case DOMINGO:
System.out.println("A descansar...");
}
}