Introdução às primitivas Java

Introdução às primitivas Java

1. Visão geral

A linguagem de programação Java apresenta oito tipos de dados primitivos.

Neste artigo, vamos lembrar o que são primitivos e examiná-los.

2. Tipos de dados primitivos

As oito primitivas definidas em Java sãoint,byte,short,long,float,double,boolean, e char – aqueles não são considerados objetos e representam valores brutos.

They’re stored directly on the stack (verifiquethis article para obter mais informações sobre gerenciamento de memória em Java).

Vamos dar uma olhada no tamanho do armazenamento, valores padrão e exemplos de como usar cada tipo.

Vamos começar com uma referência rápida:

Type Tamanho (bits) Mínimo Máximo Exemplo

byte

8

-27

27– 1

byte b = 100;

curto

16

-215

215– 1

s curto = 30_000;

int

32

-231

231– 1

int i = 100_000_000;

long

64

-263

263– 1

longo l = 100_000_000_000_000;

flutuador

32

-2-149

(2-2-23) · 2127

float f = 1.456f;

Duplo

64

-2-1074

(2-2-52) · 21023

duplo f = 1.456789012345678;

char

16

0

216– 1

char c = ‘c’;

boleano

1

boolean b = true;

2.1. int

O primeiro tipo de dado primitivo que vamos cobrir éint. Também conhecido como número inteiro, o tipoint contém uma ampla gama de valores numéricos não fracionários.

Especificamente,Java stores it using 32 bits of memory. Em outras palavras, pode representar valores de -2.147.483.648 (-231) a 2.147.483.647 (231-1).

Em Java 8, é possível armazenar um valor inteiro sem sinal até 4.294.967.295 (232-1) usando novas funções auxiliares especiais.

Podemos simplesmente declarar umint simplesmente:

int x = 424_242;

int y;

O valor padrão de umint declarado sem uma atribuição é 0.

Se a variável é definida em um método, devemos atribuir um valor antes de podermos usá-lo.

Podemos realizar todas as operações aritméticas padrão emints. Esteja ciente de quedecimal values will be chopped off ao fazer isso em números inteiros.

2.2. byte

byte é um tipo de dados primitivo semelhante aint, excetoit only takes up 8 bits of memory. Assim, por que o chamamos de byte. Como o tamanho da memória é tão pequeno,byte pode conter apenas os valores de -128 (-27) a 127 (27 - 1).

Podemos criarbyte:

byte b = 100;

byte empty;

O valor padrão debyte também é 0.

2.3. short

A próxima parada em nossa lista de tipos de dados primitivos em Java éshort.

Se quisermos economizar memória ebyte for muito pequeno, podemos usar o tipo a meio caminho entre os dois:short.

Com 16 bits de memória, tem metade do tamanho deinte duas vezes o tamanho debyte. Sua faixa de valores possíveis é de -32.768 (-215) a 32.767 (215 - 1).

short é declarado assim:

short s = 202_020;

short s;

Também semelhante aos outros tipos, o valor padrão é 0. Também podemos usar toda aritmética padrão.

2.4. long

Nosso último tipo de dado primitivo relacionado a inteiros élong.

long é o irmão mais velho deint. It’s stored in 64 bits of memory para que possa conter um conjunto significativamente maior de valores possíveis.

Os valores possíveis de um longo estão entre -9.223.372.036.854.775.808 (-263) a 9.223.372.036.854.775.807 (263 - 1).

Podemos simplesmente declarar um:

long l = 1_234_567_890;

long l;

Como em outros tipos de números inteiros, o padrão também é 0. Podemos usar toda a aritmética emlong que funciona emint.

2.5. float

Representamos números fracionários básicos em Java usando o tipofloat. Este é um número decimal de precisão única. O que significa que, se ultrapassarmos as seis casas decimais, esse número se tornará menos preciso e mais uma estimativa.

Na maioria dos casos, não nos importamos com a perda de precisão. Mas, se nosso cálculo exigir precisão absoluta (ou seja, operações financeiras, pouso na lua etc.), precisamos usar tipos específicos projetados para este trabalho. Para obter mais informações, verifique a classe JavaBig Decimal.

This type is stored in 32 bits of memory just like int. No entanto, por causa da vírgula decimal flutuante, seu intervalo é muito diferente. Pode representar números positivos e negativos. O menor decimal é 1,40239846 x 10-45, e o maior valor é 3,40282347 x 1038.

Declaramosfloats igual a qualquer outro tipo:

float f = 3.145f;

float f;

And the default value is 0.0 instead of 0. Além disso, observe que adicionamos a designaçãof ao final do número literal para definir um float. Caso contrário, o Java gerará um erro porque o tipo padrão de um valor decimal édouble.

Também podemos realizar todas as operações aritméticas padrão emfloats. No entanto, é importante observar que realizamos aritmética de ponto flutuante de maneira muito diferente da aritmética de inteiros.

2.6. double

A seguir, olhamos paradouble - seu nome vem do fato de que é um número decimal de precisão dupla.

It’s stored in 64 bits of memory. O que significa que representa um intervalo muito maior de números possíveis do quefloat.

Embora, ele sofra da mesma limitação de precisão defloat. O intervalo é 4,9406564584124654 x 10-324 a 1,7976931348623157 x 10308. Esse intervalo também pode ser positivo ou negativo.

Declarardouble é o mesmo que outros tipos numéricos:

double d = 3.13457599923384753929348D;

double d;

The default value is also 0.0 as it is withfloat. Semelhante afloat,, anexamos a letraD para designar o literal como um duplo.

2.7. boolean

O tipo de dados primitivo mais simples éboolean. Ele pode conter apenas dois valores:true oufalse. It stores its value in a single bit.

No entanto, por conveniência, o Java preenche o valor e o armazena em um único byte.

Declareboolean assim:

boolean b = true;

boolean b;

Declarando-o sem um valor, o padrão éfalse. boolean é a base para controlar o fluxo de nossos programas. Podemos usar operadores booleanos neles (ou seja,and, or, etc.).

2.8. char

O tipo de dados primitivo final a ser examinado échar.

Também chamado de caractere,char é um inteiro de 16 bits que representa um caractere codificado em Unicode. Seu intervalo é de 0 a 65.535. Que em Unicode representa‘' a‘￿'.

Para obter uma lista de todos os valores Unicode possíveis, verifique sites comoUnicode Table.

Vamos agora declarar umchar:

char c = 'a';

char c = 65;

char c;

Ao definir nossas variáveis, podemos usar qualquer literal de caractere, e eles serão automaticamente transformados em sua codificação Unicode para nós. Um valor padrão de caracteres é‘/u0000'.

2.9. Transbordar

Os tipos de dados primitivos têm limites de tamanho. Mas o que acontece se tentarmos armazenar um valor maior do que o valor máximo?

Encontramos uma situação chamadaoverflow.

Quando um número inteiro transborda, ele passa para o valor mínimo e começa a contar a partir daí.

Estouro de número de ponto flutuante retornando Infinito. Quando eles ficam sem fluxo, retornam 0,0.

Aqui está um exemplo:

int i = Integer.MAX_VALUE;
int j = i + 1;
// j will roll over to -2_147_483_648

double d = Double.MAX_VALUE;
double o = d + 1;
// o will be Infinity

Underflow é o mesmo problema, exceto se armazenarmos um valor menor que o valor mínimo.

2.10. Autoboxing

Cada tipo de dados primitivo também possui uma implementação de classe Java completa que pode envolvê-lo. Por exemplo, a classeInteger pode envolver umint. Às vezes, é necessário converter do tipo primitivo em seu wrapper de objeto (por exemplo, usando-os comgenerics).

Felizmente, o Java pode realizar essa conversão automaticamente para nós. Chamamos esse processo deAutoboxing. Aqui está um exemplo:

Character c = 'c';

Integer i = 1;

3. Conclusão

Neste tutorial, cobrimos os oito tipos de dados primitivos suportados em Java.

Esses são os blocos de construção usados ​​pela maioria, de nem todos os programas Java que existem - então, vale a pena entender como eles funcionam.