Tipos de datos en Java: tipos de datos primitivos y no primitivos

Publicado: 2020-12-01

Tabla de contenido

Introducción

En cualquier lenguaje de programación, un tipo de datos es una descripción de los datos que le permite a la computadora o al compilador saber cómo los programadores quieren asignar los datos. Un tipo de datos agrega una restricción a las variables o una función al asignar valores.

Estos tipos de datos definen el comportamiento de los datos, como la forma en que se pueden almacenar los valores de ese tipo y las operaciones que se pueden realizar en los datos. Echemos un vistazo a todos los tipos de datos proporcionados por java.

Tipos de datos primitivos

Un tipo de datos primitivo no se puede dividir en un tipo de datos más simple. Java proporciona 8 tipos de datos primitivos, ¡vamos a explorarlos!

Byte

Un byte es un tipo de número entero que almacena números enteros que van desde -128 a 127, esto elimina los problemas de restricción de memoria si se trata de números pequeños, ya que solo requiere 1 byte de memoria. Una variable de byte se puede declarar usando la palabra clave "byte". Asignar un valor superior a 127 a un byte arroja un error de "tipos incompatibles".

byte n1 = 98 ;

sistema _ fuera _ imprimirln(n1);

El fragmento anterior imprime 98 como se esperaba.

Pequeño

Un short es un tipo Integer que almacena números enteros que van desde -32768 a 32767, consume 2 bytes de memoria del disco. Una variable corta se puede declarar usando la palabra clave "corta". Asignar un valor mayor que 32767 a una variable corta arroja un error de "tipos incompatibles".

corto n1 = 9876 ;

sistema _ fuera _ imprimirln(n1);

El fragmento anterior imprime 9876 como salida.

En t

Un int es un tipo entero que almacena números enteros que van desde -2147483648 hasta 2147483647, consume 4 bytes de memoria en el disco. Generalmente, los programadores prefieren usar un int para declarar una variable que almacena valores numéricos. El compilador de Java arroja un error de "tipos incompatibles" si intenta asignar un valor mayor que el rango.

entero n1 = 987654 ;

sistema _ fuera _ imprimirln(n1);

El fragmento anterior imprime 987654 como salida.

Largo

Ahora, este es un tipo de datos interesante que consume 8 bytes de memoria en el disco. Es un tipo de entero que almacena números enteros que van desde -9223372036854775808 hasta 9223372036854775807, uf, eso toma una cantidad considerable de tiempo para leer ese rango.

Esto se usa cuando el tipo de datos int se desborda para las operaciones que realizamos. Recuerde que necesitamos terminar el valor con una 'L' mientras asignamos.

largo n1 = 987654321098765L ;

sistema _ fuera _ imprimirln(n1);

El fragmento anterior imprime 987654321098765, como se esperaba.

Flotador

Float es un tipo de datos de punto flotante, lo que significa que puede almacenar los valores, incluida su precisión decimal. Supongamos que ha desarrollado un código para anotar todos sus gastos, pero es bastante estricto y desea realizar un seguimiento de cada centavo que gasta. En ese caso, int no hará el trabajo porque int solo puede almacenar números enteros.

Necesitamos un tipo de datos de punto flotante para esta tarea. Un flotador puede almacenar los números fraccionarios que van desde 3.4e-038 a 3.4e+038, puede almacenar hasta 7 dígitos de precisión decimal. Recuerda que debes terminar el valor con una 'f'.

flotante n = 98.76f ;

sistema _ fuera _ imprimir(n);

El fragmento anterior imprime 98.76 como salida.

Lea: Propiedades y beneficios de JavaBeans: ¿Cómo debe utilizarlos?

Doble

Double es similar a float, pero como su nombre lo indica, es el doble de float en el caso de la precisión decimal. Puede tener una precisión decimal de 15 dígitos y puede almacenar números fraccionarios que van desde 1.7e-308 hasta 1.7e+308. Recuerda que tienes que terminar el valor con una “d”.

Recorramos un código para entender la diferencia entre float y double.

Prueba de clase pública {

public static void principal ( String args[])

{

flotante a1 = 1.f / 70 ;

flotante b1 = 0 ;

doble a2 = 1.d / 70 ;

doble b2 = 0 ;

flotante f1 = 1f ;

doble f2 = 1d ;

para ( int i = 0 ;i < 490 ;i ++ ){

b1 = b1 + a1;

b2 = b2 + a2;

si (yo > 1 && yo <= 50 ){

f1 = f1 * yo;

f2 = f2 * yo;

}

}

sistema _ fuera _ imprimirln(b1); //línea 1

sistema _ fuera _ imprimir(b2); //línea 2

sistema _ fuera _ imprimir(f1); //línea 3

sistema _ fuera _ imprimir(f2); //linea4

}

}

El cálculo manual de la expresión “(1/70)*490” nos da 7 como respuesta, pero ejecutarlo en java usando float y double da una respuesta diferente. En el fragmento anterior, una variable flotante y una variable doble se inicializan con 1/70, y agregar este valor a otra variable 490 veces debería darnos 7 como respuesta.

Al ejecutar el fragmento anterior, la línea 1 imprime 6,9999795, que tiene una precisión decimal de 7 dígitos, mientras que la línea 2 imprime 6,999999999999978, que tiene una precisión decimal de 15 dígitos. Entonces, si float no le proporciona una precisión decimal precisa, puede optar por el doble. Además, es más probable que un flotador alcance el infinito ya que el rango de flotación es menor en comparación con el doble.

Por ejemplo, si almacena factorial de un número considerablemente grande, esa variable llega al infinito. Del fragmento anterior, podemos ver que hay dos variables que se usan para almacenar el factorial de 50 y en el momento en que imprimimos el resultado, la línea 3 imprime infinito y la línea 4 imprime 3.0414093201713376E64, por lo que si float no cumple con su valor numérico entonces puedes optar por el doble.

Tanto float como double se pueden usar como números científicos con una 'e', ​​donde 'e' indica la potencia de 10. Por ejemplo, 3e2f equivale a 300,0 en el tipo de datos float y 3e4d equivale a 30000,0 en el tipo de datos double.

booleano

Un tipo de datos booleano puede tomar solo dos valores verdadero y falso. Se declara utilizando la palabra clave booleana en java. Este tipo de datos generalmente se usa como una variable indicadora para realizar un seguimiento de los cambios que hacemos en un código. Por ejemplo, establecer la bandera en verdadero si un número es divisible por 2, de lo contrario, falso.

indicador booleano = verdadero ;

booleano b1 = falso ;

sistema _ fuera _ println(bandera); //imprime verdadero

sistema _ fuera _ imprimirln(b1); //imprime falso

Carbonizarse

Un tipo de datos char se usa para almacenar un solo carácter, este tipo de datos se puede declarar usando la palabra clave char. Recuerde que tenemos que encerrar el carácter entre comillas simples durante la asignación, puede almacenar caracteres en minúsculas y mayúsculas en un tipo de datos char.

Almacenar más de un carácter en un tipo de datos char genera un error. Además, hay un hecho divertido con respecto al tipo de datos char, que es, encasillar un char en un almacén de enteros, el valor ASCII de ese carácter, y viceversa, también es cierto.

char c1 = ' a ' ;

char c2 = 66 ;

sistema _ fuera _ imprimirln(c1); //línea 1

sistema _ fuera _ imprimirln(c2); //línea 2

sistema _ fuera _ println(( int )c1); //línea 3

En el fragmento de línea 1 anterior, imprime 'a' como salida, que es como se esperaba. La línea 2 imprime 'B' como salida ya que 66 se refiere a B en la tabla ASCII. La línea 3 imprime 97 como salida ya que es el valor ASCII de 'a'.

Pero, ¿y si queremos almacenar más de un carácter? Llegaremos a ellos en los próximos párrafos.

Lea también: 17 interesantes ideas y temas de proyectos Java para principiantes

Tipos de datos no primitivos

Los tipos de datos no primitivos en java también se denominan tipos de referencia porque se refieren a objetos. Los tipos de datos no primitivos son creados por el programador y no están predefinidos. Dado que los no primitivos se denominan objetos, se les puede asignar un valor nulo, que no es un caso en el tipo primitivo.

A diferencia de los tipos de datos primitivos, un tipo de datos no primitivos debe comenzar con una letra mayúscula. Todos los tipos de datos no primitivos tienen el mismo tamaño y consumen la misma memoria en el disco, lo que es diferente en el caso de los tipos de datos primitivos.

Cuerda

Una cadena es un tipo de datos especial en Java, donde contradice el hecho de que los programadores definen tipos no primitivos. El tipo de datos de cadena es un tipo de datos no primitivo pero está predefinido en Java, algunas personas también lo llaman un noveno tipo de datos primitivo especial.

Esto resuelve el caso en el que un char no puede almacenar varios caracteres, se utiliza un tipo de datos de cadena para almacenar la secuencia de caracteres. Recuerde que debe encerrar la secuencia de texto entre comillas dobles.

Cadena s1 = " Hola " ;

sistema _ fuera _ imprimir(s1);

El fragmento anterior imprimirá "Hola" como se esperaba.

Las matrices, las clases, las interfaces, etc. son algunos otros tipos de datos no primitivos en Java.

¿Cómo calcular el rango de tipos de datos?

Después de ver los rangos de tipos de datos primitivos, es posible que tenga la duda de que debemos recordar esto. Bueno, la respuesta sería NO. Pero debemos recordar el tamaño de cada tipo de datos y luego podemos calcular el rango de ese tipo de datos.

Por ejemplo, un tipo de datos de byte consume 1 byte de memoria en el disco. A nivel del compilador, todos los datos se almacenan en forma de bits y un byte tiene 8 bits. Ahora, uno de los 8 bits se usa para especificar el signo del número y los 7 bits restantes pueden almacenar el número real, por lo que el número máximo que podemos almacenar usando 7 bits es 128.

Entonces, -128 es el límite inferior del tipo de datos de bytes y +127 es el límite superior porque cero es el primer número en la recta numérica después de los números negativos.

De manera similar, en los tipos de coma flotante, los datos se dividen en 3 partes, bit con signo, mantisa y exponente. La parte de mantisa se usa para almacenar la precisión decimal, un flotante tiene 23 bits de mantisa más un bit oculto y un doble tiene 52 bits de mantisa más un bit oculto.

Para float, log(2^24)/log(10) que es aproximadamente igual a 7, por lo que es una precisión decimal de 7 dígitos.

Para double, log(2^53)/log(10) que es aproximadamente igual a 15, por lo que la precisión decimal es de 15 dígitos.

Inscríbase en cursos de ingeniería de software de las mejores universidades del mundo. Obtenga programas Executive PG, programas de certificados avanzados o programas de maestría para acelerar su carrera.

Conclusión

Hemos visto varios tipos de datos en java, tipos de datos primitivos y no primitivos entendidos, la diferencia entre primitivos y no primitivos. Revisó fragmentos de código de muestra para tener un conocimiento básico de la declaración de tipos de datos.

Entendió cómo calcular el rango de varios tipos de datos de tipos de datos enteros, cómo calcular la precisión decimal de los tipos de datos de coma flotante.

Ahora que conoce varios tipos de datos en Java, ¡comience a explorarlos!

Si está interesado en obtener más información sobre Java, OOP y desarrollo de software de pila completa, consulte el programa Executive PG de upGrad & IIIT-B en desarrollo de software de pila completa, que está diseñado para profesionales que trabajan y ofrece más de 500 horas de formación rigurosa. Más de 9 proyectos y asignaciones, estado de exalumno de IIIT-B, proyectos finales prácticos prácticos y asistencia laboral con las mejores empresas.

Prepárate para una carrera del futuro

Aplicar ahora para Maestría en Ingeniería de Software