Java LanguageTipos de datos primitivos


Introducción

Los 8 tipos de datos primitivos byte , short , int , long , char , boolean , float y double son los tipos que almacenan la mayoría de los datos numéricos sin procesar en los programas Java.

Sintaxis

  • int aInt = 8; // La parte definitoria (número) de esta declaración int se llama un literal.

  • int hexInt = 0x1a; // = 26; Puedes definir literales con valores hexadecimales prefijados con 0x .

  • int binInt = 0b11010; // = 26; También puedes definir literales binarios; prefijado con 0b .

  • long goodLong = 10000000000L; // Por defecto, los literales enteros son de tipo int. Al agregar la L al final del literal, le está diciendo al compilador que el literal es largo. Sin esto, el compilador arrojaría un error de "Número entero demasiado grande".

  • doble aDouble = 3.14; // Los literales de punto flotante son de tipo doble de forma predeterminada.

  • flotar aFloat = 3.14F; // Por defecto, este literal habría sido un doble (y causó un error de "Tipos incompatibles"), pero al agregar una F le decimos al compilador que es un flotador.

Observaciones

Java tiene 8 tipos de datos primitivos , a saber, boolean , byte , short , char , int , long , float y double . (Todos los demás tipos son tipos de referencia . Esto incluye todos los tipos de matriz y los tipos / clases de objetos integrados que tienen un significado especial en el lenguaje Java; por ejemplo, String , Class y Throwable y sus subclases).

El resultado de todas las operaciones (suma, resta, multiplicación, etc.) en un tipo primitivo es al menos un int , por lo que sumar un short a un short produce un int , al igual que agregar un byte a un byte , o un char a un char . Si desea asignar el resultado de eso a un valor del mismo tipo, debe convertirlo. p.ej

byte a = 1;
byte b = 2;
byte c = (byte) (a + b);

No lanzar la operación dará como resultado un error de compilación.

Esto se debe a la siguiente parte de la especificación del lenguaje Java, §2.11.1 :

Un compilador codifica cargas de valores literales de tipos byte y short usando instrucciones de la Máquina Virtual Java que extienden sus valores de signo a valores de tipo int en tiempo de compilación o tiempo de ejecución. Las cargas de valores literales de los tipos boolean y char se codifican utilizando instrucciones que extienden el literal literalmente a un valor de tipo int en tiempo de compilación o tiempo de ejecución. [..]. Por lo tanto, la mayoría de las operaciones en valores de tipos reales boolean , byte , char y short se realizan correctamente mediante instrucciones que operan en valores de tipo computacional int .

La razón detrás de esto también se especifica en esa sección:

Dado el tamaño del código de operación de un byte de la Máquina Virtual Java, los tipos de codificación en códigos de operación ejercen presión sobre el diseño de su conjunto de instrucciones. Si cada instrucción escrita admitiera todos los tipos de datos en tiempo de ejecución de la Máquina Virtual Java, habría más instrucciones de las que podrían representarse en un byte . [...] Se pueden usar instrucciones separadas para convertir entre tipos de datos no compatibles y compatibles según sea necesario.

Tipos de datos primitivos Ejemplos relacionados