Curso gratuito de Java. Regístrate para hacer un seguimiento de tu progreso →

Java: Tipos de datos

En esta lección, vamos a examinar el sistema de tipos en Java desde una perspectiva general, sin entrar en detalles. Pero primero, respondamos a la pregunta de por qué es importante conocerlos.

En el código, siempre estamos trabajando con datos. Estos datos tienen diferentes naturalezas y pueden estar organizados de diferentes maneras, lo que afecta la facilidad de trabajar con ellos. Los tipos nos persiguen en cada paso, por lo que sin ellos, la programación en Java solo es posible a un nivel muy básico.

Por otro lado, no intentes memorizar toda esta información sobre los tipos de memoria: se proporciona solo para tener una idea general. Todo lo importante sobre los tipos lo aprenderás durante el proceso de programación. En Java, los tipos de datos se dividen en dos grandes grupos:

  • Primitivos - predefinidos en Java
  • Referenciales o no primitivos - creados por el programador, excepto String y Array

Estos grupos tienen diferencias que discutiremos más adelante, cuando nos familiaricemos con null y la programación orientada a objetos. Por ahora, es suficiente saber que los nombres de los tipos primitivos comienzan con minúscula (int), mientras que los nombres de los tipos referenciales comienzan con mayúscula (String).

En total, Java tiene ocho tipos primitivos de datos:

  • byte
  • short
  • int
  • long
  • float
  • double
  • boolean
  • char

Veamos los primeros cuatro tipos. Estos son números enteros de diferentes tamaños:

  • byte - ocupa 1 byte en memoria, por lo que puede almacenar números del -128 al 127
  • short - ocupa 2 bytes en memoria
  • int - ocupa 4 bytes en memoria
  • long - ocupa 8 bytes en memoria

Veamos un ejemplo de código:

byte x = 3; // Funcionará sin problemas

// Error: tipos incompatibles: posible conversión de int a byte con pérdida de información
byte y = 270;

La declaración de la variable y termina con un error porque hemos especificado el tipo byte, pero le hemos asignado el valor 270, que está fuera del rango de valores permitidos.

Surge una pregunta lógica. ¿Por qué necesitamos cuatro tipos para almacenar números? ¿Por qué no tener uno que pueda contener casi cualquier número grande?

Técnicamente, esto es posible, pero estamos en el mundo de las soluciones de ingeniería. Cualquier solución siempre tiene un lado negativo, por lo que no se puede hacer perfectamente: tendrás que sacrificar algo. En este caso, el tamaño de la memoria ocupada. Si solo dejamos long, un programa que opera activamente con números comenzará a ocupar demasiado espacio en la memoria RAM, lo cual puede ser crítico.

La misma lógica se aplica a los tipos float y double. Ambos representan números racionales. La diferencia es que double es el doble de float, es decir, ocupa el doble de espacio en memoria.

Los creadores de Java confían en la sensatez de los programadores, en su capacidad para elegir los tipos adecuados según la tarea. Para algunas aplicaciones extremas, esto es cierto, pero en el desarrollo típico, es simple. Los programadores eligen int para números enteros y double para números racionales.

Veamos los tipos de datos restantes.

El tipo boolean representa los valores lógicos true y false. Le dedicaremos una sección completa más adelante, donde hablaremos de él.

El tipo char es especial: representa un carácter. No es una cadena, se define de manera diferente, con comillas simples:

char ch = 'a';

// Error: tipos incompatibles: no se puede convertir java.lang.String a char
char ch2 = "b";

Una cadena que consta de un solo carácter no es un carácter. Parece ilógico, pero desde el punto de vista de los tipos, debe ser así, y con el tiempo lo entenderás.

Extraer un carácter de una cadena extrae un carácter, no una cadena que consta de un solo carácter:

"hexlet".charAt(1); // 'e'

Bien, ¿y dónde está el tipo de datos String - cadena? El caso es que no es un tipo primitivo. Internamente, es un conjunto de caracteres. A pesar de esta diferencia técnica, las cadenas se utilizan junto con los tipos primitivos sin ninguna diferencia especial.

Tarea

Muestra en la pantalla el resultado de concatenar la palabra hexlet, el carácter - y el número 7.

¿El ejercicio no pasa la prueba, qué debo hacer? 😶

Si te quedaste atascado, es el momento perfecto para hacer una pregunta en las "Discusiones".
* Asegúrate de incluir la salida de las pruebas. Sin ella, es casi imposible entender qué está mal, incluso si muestras tu código. Los programadores tienen dificultades para ejecutar el código en su mente, pero casi siempre es posible entender a dónde mirar a partir del error que recibiste.

Mi código funciona en mi entorno, pero no aquí 🤨

Las pruebas están diseñadas de manera que verifican la solución de diferentes maneras y con diferentes datos. A menudo, una solución funciona con ciertos datos de entrada pero no con otros. Para entender este punto, revisa la pestaña "Pruebas" y presta atención a los mensajes de error, que suelen contener pistas.

Mi código es diferente a la solución del profesor 🤔

Esto es normal 🙆. En programación, una tarea puede tener muchas soluciones diferentes. Si tu código pasa la prueba, cumple con los requisitos de la tarea.

En raras ocasiones, la solución puede estar ajustada para pasar las pruebas, pero esto suele ser evidente.

Leí la lección, pero no entendí nada 🙄

Crear materiales de aprendizaje comprensibles para todos es bastante difícil. Hacemos nuestro mejor esfuerzo, pero siempre hay margen para mejorar. Si encuentras material que no entiendes, describe el problema en las "Discusiones". Es ideal si puedes formular los aspectos que no entiendes en forma de preguntas. Por lo general, necesitamos unos días para hacer mejoras.

Por cierto, tú también puedes contribuir a mejorar los cursos: en la parte inferior hay un enlace al código fuente de las lecciones, que se puede modificar directamente en el navegador.

Consejos útiles


¿Encontraste un error? ¿Quieres añadir algo? Las solicitudes de extracción son bienvenidas. https://codica.la/errores
Si te encuentras con dificultades y no sabes qué hacer, pregunta en nuestra gran y amigable comunidad