"Olá, amigo!"

"Oi, Rishi!"

"Você já domina o básico da sintaxe Java, então agora quero dar mais alguns detalhes."

"Hoje, falaremos sobre tipos primitivos e quanta memória eles ocupam. Esse conhecimento será útil, talvez até hoje. Aqui estão os tipos básicos:"

Tipo Tamanho,
bytes
Faixa de valor Valor padrão Descrição
byte 1 -128 .. 127 0 O menor inteiro, 1 byte
curto 2 -32.768 .. 32.767 0 Inteiro curto, 2 bytes
int 4 -2*10 9  .. 2*10 9 0 Número inteiro, 4 bytes
longo 8 -9*10 18  .. 9*10 18 0L Inteiro longo, 8 bytes
flutuador 4 -10 127  .. 10 127 0.0f Número fracionário, 4 bytes
dobro 8 -10 1023  .. 10 1023 0,0d Número fracionário com o dobro do tamanho de um float, 8 bytes
boleano 1 verdadeiro falso falso Tipo booleano (somente verdadeiro ou falso)
Caracteres 2 0..65.535 '\u0000' Caracteres, 2 bytes, todos os valores sem sinal
Objeto 4 Qualquer referência ou null. nulo Armazena referências a instâncias de Object ou classes descendentes de Object

"Deixe-me contar mais sobre cada tipo."

"O tipo byte é o menor tipo inteiro. Variáveis ​​desse tipo ocupam apenas 1 byte de memória. Um byte pode armazenar valores no intervalo entre -128 e 127."

"Por que precisamos de um tipo tão pequeno? Por que nem sempre podemos usar int?"

"Poderíamos. Mas se você estiver criando grandes arrays cujos elementos nunca precisam armazenar valores maiores que 100, por que não usar esse tipo? Isso faz sentido?"

"Um short tem o dobro do comprimento de um byte e também armazena apenas números inteiros. O maior número positivo que ele pode armazenar é 32.767. O maior número negativo que ele pode armazenar é -32.768."

"O  tipo int  com o qual você já está familiarizado. Ele pode armazenar números inteiros no intervalo de ±2.000.000.000."

"O  tipo float  foi criado para armazenar números reais (fracionários). Seu tamanho é de 4 bytes."

"Os números fracionários são armazenados de uma forma bastante interessante."

"Por exemplo, o número  987654,321  pode ser representado como 0,987654321*10 6 . Isso significa que pode ser representado como dois números na memória: 0,987654321 ( mantissa ou significando ) e 6 ( expoente de base 10 )."

"Para que precisamos disso?"

"Essa abordagem nos permite usar 4 bytes para armazenar números muito maiores do que um int pode armazenar. Para isso, temos que sacrificar a precisão. Apenas uma parte desses bytes é usada para armazenar a mantissa, o que significa que esses números armazenam apenas 6-7 casas decimais. Casas decimais menos significativas são descartadas."

"Esses números também são chamados de números de ponto flutuante . É daí que vem o nome do tipo float . "

"Eu vejo."

"O tipo double é semelhante ao float , mas tem o dobro do comprimento (daí o nome), ocupando 8 bytes. Pode acomodar uma mantissa maior e dígitos mais significativos. Se precisar armazenar números reais, tente sempre usar esse tipo. "

" char é um tipo híbrido. Seus valores podem ser interpretados tanto como números (que podem ser adicionados ou subtraídos) quanto como caracteres. Isso é possível porque mesmo que os caracteres tenham uma representação visual, o computador os vê principalmente como números. E é mais conveniente tratá-los como números. Mais uma coisa: o tipo char é sempre positivo. Ele não pode conter valores negativos. "

"O tipo booleano é um tipo lógico que pode armazenar apenas dois valores: verdadeiro ou falso  . "

"Apesar de sua presença neste gráfico, o tipo Object não é um tipo primitivo. É a classe base para todas as classes em Java. Primeiro, todas as classes são derivadas dele e, portanto, contêm seus métodos. Segundo, uma variável Object pode armazenar referências para objetos de qualquer tipo, incluindo null ( uma referência nula )."

"Aprendi muito hoje. Obrigado pela lição, Rishi."