Tipos de Variáveis

Boa noite pessoal,
Comecei a estudar esses dias sobre Java, inclusive peguei algumas dicas aqui. Porém fiquei com uma dúvida. Existem vários tipos de variáveis, porém algumas delas não consigo encontrar pra que servem.

Pelo que entendi as variáveis são:

int, double, boolean, char, byte, short, long e float.

Com isso, consegui entender que int serve para números inteiros, double para números Fracionários/reais, Char para um único caractere e Boolean para condições (Verdadeiro ou Falso). A dúvida é: Pra que e quando vou usar os outros quatro? Além disso, vi uma tabela com número de Bytes, pra que serve?

Byte: 1 byte.
Short: 2 bytes.
Int: 4 bytes.
Long: 8 bytes.
Float: 4 bytes.
Double: 8 bytes.

Pra entender sobre as variáveis tem que entender o princípio básico do Java, que seria rodar em qualquer dispositivo. Percebendo essa característica também percebe-se que há dispositivos com mais memória (Como um Smartphone) e outros com menos (Como um Smart Watch), esses vários tipos de variáveis foram criados para otimizar a utilização de memória nos variados dispositivos que usam programas em java.

Certo. Esta parte eu entendi. Mas a dúvida continua. Quando e como se daria o uso desse tipo de variável?

Com exceção do boolean (eu diria que até ele pois resume-se em 0 e 1, mas não vem ao caso aqui), todos os outros são númericos (inclusive o char), a questão é basicamente a capacidade que cada tipo suporta para o que vocẽ precisa no programa/sistema…

Por exemplo, guardar um número pequeno onde você terá a certeza que não passará de 100, e você tem uma arquitetura limitada, pouca memória (há circuitos que possuem apenas bytes), vale a pena eu colocar esse número num int e desperdiçar memória (4 bytes) ou é mais vantajoso guardar esse número num tipo byte (consumindo assim somente 1 byte)?

Você não consegue ver diferença porque usamos PC’s para programar e geralmente programamos para PC’s, mas um rádio-relógio por exemplo é muito limitado em recursos, onde a “dosagem” certa na hora de criar variáveis faz toda a diferença.

1 curtida

Minha contribuição, nada de muito diferente, do que foi apresentado. :stuck_out_tongue_winking_eye:

Você vai analisar qual o campo de atuação da variável.

Veja só.

Caso você precise de um contador para o número de meses, você pode usar o byte, pois ele pode representar valores inteiros que vão de -128 a + 127.
Como o ano tem 12 meses uma variável do tipo byte é satisfatória.

Por que usar o byte e não o int?
O byte usa 8bits de memória, já o int usa 32 bits (4bytes), logo são quatro vezes + consumo de memória (desnecessária), pois a operação não consome tantos recursos.

Outro exemplo:
Usar um contador para os municípios do Brasil.
https://www.google.com.br/search?q=total+de+município+do+brasil&ie=utf-8&oe=utf-8&client=firefox-b&gws_rd=cr&ei=dWyTWcvAKYGQwgSq1Y74Bw

Como são 5570 municípios, se você usar o byte vai dar errado, pois ele só vai até 127, então você pode usar o short, que tem 16bits e suporta um intervalo numérico entre -32768 e 32767, deixando de lado o int, pois ele vai consumir 2 vezes mais memória.

Assim, é uma questão de intervalo de atuação da variável.

Logo, byte, short, char, int e long estão associados a números inteiros.
O float usa menos memória que o double e ambos estão associados a cálculos com ponto flutuante.
A depender do nível de precisão, o float pode ser usado, mas ele tem menos precisão que o double, mas consome menos memória.

Ex.: Um número com duas casas decimais (R$ 3.54) você pode usar um float, pois a precisão dele é satisfatória.
Cálculos científicos -> double, pois a precisão deve ser a melhor possível.

Então, você avalia o intervalo de atuação da variável e vê qual tipo primitivo pode atender a sua necessidade consumindo menos memória.

2 curtidas

Só complementando o que os colegas já explicaram.
byte, boolean, short, char, int, float, long e double (todas em minúsculo) não são variáveis, são tipos primitivos de dados.

Você pode declarar variáveis que são desses tipos de dado, assim como pode declarar variáveis cujo tipo de dado seja uma classe, interface ou enumeração.

A magnitude dos tipos primitivos, em bits, é a seguinte:

byte   boolean:  8 bits
short  char   : 16 bits
int    float. : 32 bits
long   double : 64 bits
1 curtida

Olá RSM_RLB!

Tomara que está seja a solução para sua duvida:

byte: É o tipo de dado capaz de armazenar 8 bits de informação, ou seja, um número inteiro entre -128 e 127. Sua utilização é recomendada em caso de economia de memória, já que alguns tipos de dados maiores possuem processamento mais rápido.

short: É o tipo de dado que é capaz de armazenar números inteiros de 16 bits, ou seja, um número inteiro entre -32.768 e 32.767.

int: É o tipo de dado capaz de armazenar 32 bits, ou seja, de representar um número inteiro qualquer entre -2.147.483.648 e 2.147.483.647. É o tipo mais indicado na maioria dos casos por possuir uma grande faixa de valores. Variáveis deste tipo também costumam ser manipuladas mais rapidamente já que correspondem à largura de dados (de palavra) mais usual na maioria dos processadores atuais.

long: É o tipo de dado capaz de armazenar 64 bits de informação, ou seja, que pode representar um número inteiro qualquer entre -9.223.372.036.854.775.808L e 9.223.372.036.854.775.807L. Recomenda-se seu uso apenas quando for preciso assumir valores maiores ou menores do que aqueles possíveis de serem assumidos pelo int.

float: É o tipo de dado capaz de armazenar números reais de precisão simples, ou seja, 32 bits de informação representando um número real.

double: É o tipo de dado capaz de armazenar números reais de precisão dupla, ou seja, 64 bits de informação em forma de número real. É usado para representar valores nos quais é preciso uma precisão maior que a de float.

4 curtidas

@jairodione legal, eu não fazia ideia disso

Agradeço a todas as respostas. Ajudaram muito. Mas agora fico com uma dúvida. E se no caso eu quiser colocar um texto? Qual seria a variável adequada? Porque pelo que entendi todas estas só recebem números.

O Tipo de Variável para Texto é “String”

1 curtida

Todas elas não, boolean só recebe true ou false e char só recebe caracteres.