Um dos principais tópicos a serem estudados quando se inicia em uma nova linguagem de programação é o de 'Tipos de dados'. Nas aulas básicas de algoritmos aprendemos os tipos mais básicos de dados: Inteiro, Ponto Flutuante, Booleano e Caractere. Entretanto, em algumas linguagens como é o caso do Java temos alguns tipos básicos de variáveis a mais disponíveis para trabalharmos.
De fato, essa diferença ocorre mais por uma questão de semântica e performance que justifica uma mudança de linguagem para linguagem. Mas não há nada que não possa ser feito e/ou que só possa ser feito utilizando a estrutura de dados que o Java apresenta, apenas é uma especificidade da linguagem.
Os tipos de dados que temos em Java são divididos em dois grupos, os tipos Primitivos e os tipos Não Primitivos de dados. A principal diferença prática que você vai encontrar com de um para o outro é: tipos primitivos não possuem métodos implementados nativamente na linguagem, já os não primitivos possuem métodos a disposição, métodos como toString(), toLowerCase(), toUpperCase(), etc...
Os dados primitivos são:
Boolean: Engloba apenas os dois valores básicos, sim ou não. Ocupa apenas um bit na memória.
Char: Pode ser utilizado para armazenar caracteres. Com o limite máximo de uso de memória de 16 bits.
Byte: Pode armazenar números inteiros compreendidos entre -128 e 127.Ou seja, para armazenar a idade de uma pessoa por exemplo. Ocupa apenas 8bits da memória.
Short: Dado tipo short tem uma capacidade maior de armazenamento em relação aos bytes. Podendo armazenar valores entre -32.768 até 32.767 e ocupando 16 bits da memória.
Int: O dados desse tipo tem maior capacidade de armazenamento em relação aos dados tipo short. Ocupando 32 bits da memória, podem armazenar valores entre -2.147.483.648 e 2.147.483.647.
Long: Esse tipo de dado é o maior disponível em Java para trabalhar com números, maior do que todos os descritos anteriormente ocupa 64 bits do armazenamento e engloba valores entre -9.223.372.036.854.775.808 e 9.223.372.036.854.775.807. Ao contrário dos outros tipos de variaveis para armazenamento de números essa tem a especificidade de que ao ser declarada uma variável desse tipo é necessário inserir um 'L' ao final do número de modo a indicar ao sistema que é um número tipo Long. Por exemplo: Long numeroLong = 4512215321212543L;
Float: Com valor ilimitado quanto aos caracteres que pode englobar, ocupa 32 bits da memória tem uma precisão menor do que os dados tipo double.
Double: Também com valor ilimitado quanto aos caracteres que pode englobar, ocupa 64 bits da memória, ou seja, o dobro do tipo de dado Float, deste modo tem a vantagem de poder armazenar o dobro da capacidade do Float.
Mas qual a motivação de ter tipos diferentes de dados para armazenar números e ou caracteres?
Para sistemas simples, pequenos, de fato não é possível perceber uma diferença nos dias atuais em relação a utilização de um ou outro tipo de variável para armazenar valores. Mas sessa é uma conquista recente da humanidade.
Atualmente como sabemos, a capacidade de processamento e armazenamento de dados em computadores é centenas de vezes maior do que a 10 anos atrás. Imagine então 50 anos atrás, cada bit era valioso...
Entretanto isso não faz com que essa separação perca o sentido completamente hoje em dia. Em grandes sistemas, inclusive nos dias atuais a depender do tipo de variável que você armazena um valor o desempenho será melhor ou pior. Imagine que você tem a tarefa de fazer um computador executar uma conta 1 bilhão de vezes.
Se você optar por realizar a conta utilizando variáveis de tipo Long na operação, a cada computação realizada pela máquina a mesma terá de carregar 64 bits de um dos valores e mais 64 bits do outro valor, ou seja, 128 bits a serem carregados para executar 1 do bilhão de operações que precisamos fazer. Agora, se for possível e você optar por um tipo menor de dado, o sistema terá de carregar muito menos informação para executar a mesma tarefa.
E não pense que uma operação de 1 bilhão de computações é algo impossível de acontecer, a realidade é que é muito pelo contrário disso, justificando ainda uma tipificação mais elaborada dos tipos de dados.
Conclusão
Tipos de dados estão aí para atender da melhor forma o desenvolvedor auxiliando a gerenciar o desempenho das suas aplicações. Entendendo agora a divisão dos tipos de dados em Java você já pode começar a utilizar isso em suas próximas aplicações. Espero ter ajudado, se puder, compartilhe esse conteúdo... Até a próxima!