CodeGym /Cursos /JAVA 25 SELF /Números e caracteres em Java

Números e caracteres em Java

JAVA 25 SELF
Nível 6 , Lição 1
Disponível

1. Quais tipos de números existem?

Em programação, trabalhamos constantemente com números — da idade do usuário ao número de estrelas na galáxia ou de centavos na conta bancária. Mas tarefas diferentes exigem tipos de números diferentes: às vezes é importante armazenar apenas inteiros, às vezes frações muito precisas e, em outras, números “sem sinal”.

Inteiros (int e outros)

Número inteiro é um número sem parte fracionária.
Em Java, o tipo mais usado é int, mas há várias outras opções que diferem em tamanho e faixa.

  • int — o tipo “padrão” para inteiros. Ele comporta valores bem grandes (e pequenos) e não consome muita memória. Por exemplo, para contar curtidas, idade, quantidade de dias no ano, quase sempre será usado int.
  • long — usado quando os valores podem ser muito grandes (por exemplo, bilhões ou trilhões). Exemplo: armazenar o total de visualizações do YouTube em toda a história.
  • short — econômico, mas raramente usado. Indicado onde há muitos valores pequenos repetidos (por exemplo, dados de áudio, componentes de cor).
  • byte — para valores ainda menores, especialmente em gráficos e trabalho com arquivos, quando a economia de memória é importante.

Números de ponto flutuante (double, float)

Às vezes é preciso trabalhar com números que têm parte fracionária. Por exemplo, temperatura do ar, média do aluno, preço do produto com centavos.

  • double — é o tipo “padrão” para armazenar números fracionários. Preciso o suficiente para a maioria dos cálculos (exemplo: 3.1415926535…).
  • float — tipo mais leve e menos preciso, mais comum em tarefas de computação gráfica ou no processamento de grandes arrays de dados, onde a economia de memória é importante.

Tipos numéricos especiais

  • BigInteger — quando é preciso lidar com números enormes, além dos intervalos padrão, por exemplo, em criptografia ou em cálculos astronômicos.
  • BigDecimal — classe para cálculos exatos com números fracionários (finanças, cálculo de juros), ajuda a evitar imprecisões típicas de double e float.

2. Faixas de valores

Tipos inteiros podem armazenar tanto números positivos quanto negativos. Isso é conveniente quando os valores podem ser “acima ou abaixo de zero”: por exemplo, temperatura, saldo da conta, altitude em relação ao nível do mar.

Exemplo:

  • int : -10, 0, 50
  • long : 0, 10, -1000_000_000_000_000_000L

Tipos inteiros

Tipo Tamanho Faixa de valores Exemplo de uso
byte
1 byte -128 a 127 -128, 0, 127
short
2 bytes -32 768 a 32 767 -1000, 0, 32000
int
4 bytes -2 147 483 648 a 2 147 483 647 -1000000, 0, 2000000
long
8 bytes -9 223 372 036 854 775 808
até 9 223 372 036 854 775 807
-10_000_000_000, 1

Tipos de ponto flutuante

Tipo Tamanho Exemplos de valores Descrição
float
4 bytes 3.14f, -0.001f precisão simples (7 dígitos)
double
8 bytes 3.1415, -1.7E+308 precisão dupla (15–16 dígitos)

3. Sufixos para números

Em algumas situações, é preciso indicar explicitamente qual tipo você quer usar para um número. Isso é feito com a ajuda de sufixos:

  • L ou l — para o tipo long (por exemplo, 10000000000L)
  • F ou f — para o tipo float (por exemplo, 3.14f)
  • D ou d — para o tipo double (geralmente não é necessário, pois números fracionários sem sufixo são double)

Se o sufixo não for informado, por padrão um número inteiro é considerado int, e um número fracionário — double. Por exemplo, 42 é int, e 3.14 é double.

Por quê? Por exemplo, para não obter um erro ao atribuir um número muito grande a uma variável do tipo long:

long bigNumber = 9000000000L; // se remover o L, haverá erro de compilação

Separador com underscore _

Quando os números são longos, é fácil se confundir nos zeros. Para clareza e legibilidade, no Java é possível usar underscores dentro do número.

int population = 146_700_000;
long stars = 100_000_000_000L;
Uso de underscores para facilitar a leitura dos números

Isso é totalmente válido: o compilador ignora os underscores, e para você fica fácil ver as casas “de relance”. O principal — não colocar underscore no início, no fim, depois do ponto ou antes do sufixo.

4. Tipo de caractere char: o que é e para que serve?

O tipo char é usado para armazenar um único caractere: letra, dígito, sinal de pontuação, espaço, caractere especial e até emoji.

Exemplos:

char letter = 'A';
char digit = '7';
char symbol = '?';
char cyrillic = '\u0416';
char euro = '€';
char smile = '☺'; // Sim, isso também é possível!

Regras importantes:

  • O valor do tipo char é escrito entre aspas simples: 'A', '7', '#'.
  • É exatamente um caractere! Se você escrever 'AB', o compilador vai reclamar.
  • Por trás de cada caractere há um código numérico (Unicode).

Unicode: caracteres do mundo inteiro

O Java usa o padrão Unicode, o que permite armazenar não apenas letras latinas, mas também cirílico, ideogramas, emojis e até hieróglifos do Egito Antigo (se algum dia for preciso).

Fato interessante:
O tipo char é, essencialmente, um número de 16 bits (de 0 a 65535), no qual cada valor corresponde a um caractere.

5. Caracteres e números: ligação via Unicode

Como cada caractere por baixo é um número, podemos converter tranquilamente char em int e vice-versa.

Exemplo: descobrir o código Unicode de um caractere

public class CharToInt {
    public static void main(String[] args) {
        char ch = 'A';
        int code = ch; // Conversão implícita de char → int

        System.out.println("Código do caractere '" + ch + "': " + code);
    }
}

Resultado:

Código do caractere 'A': 65

E agora o contrário — obter o caractere a partir do código:

public class IntToChar {
    public static void main(String[] args) {
        int code = 1040; // Código da letra '\u0410' no Unicode (cirílico)
        char ch = (char) code; // Conversão explícita de int → char

        System.out.println("Caractere com o código " + code + ": " + ch);
    }
}

Resultado:

Caractere com o código 1040: \u0410

6. Principais tipos primitivos do Java

Tipo Tamanho (bits) Faixa de valores Exemplo de valor Observação
byte
8 -128 ... 127 42 Usado muito raramente
short
16 -32,768 ... 32,767 12345 Para economia de memória
int
32 -2,147,483,648 ... 2,147,483,647 1000000 Principal para inteiros
long
64 ≈ −9.22 × 1018 ... ≈ 9.22 × 1018 5000000000L Para inteiros muito grandes
float
32 ~±3.4 × 10-38 ... ±3.4 × 1038 3.14f Números fracionários, baixa precisão
double
64 ~±1.7 × 10-308 ... ±1.7 × 10308 2.718 Números fracionários, alta precisão
char
16 0 ... 65 535 (Unicode) '\u0416', 'A', '?' Um único caractere
boolean
1 true, false true Valor lógico
1
Tarefa
JAVA 25 SELF, nível 6, lição 1
Bloqueado
Criando o inventário do herói de RPG 🎮
Criando o inventário do herói de RPG 🎮
1
Tarefa
JAVA 25 SELF, nível 6, lição 1
Bloqueado
Contagem dos tesouros no covil do dragão 🐉
Contagem dos tesouros no covil do dragão 🐉
1
Tarefa
JAVA 25 SELF, nível 6, lição 1
Bloqueado
Decifrando runas antigas 🔮
Decifrando runas antigas 🔮
1
Tarefa
JAVA 25 SELF, nível 6, lição 1
Bloqueado
Magia bidirecional de caracteres e números ✨
Magia bidirecional de caracteres e números ✨
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION