3 Variáveis e Tipos
3.1 O que é variável
Variável é um espaço para guardar um valor.
Pense como uma caixa com etiqueta. Ao criar uma variável, você escolhe um nome claro para facilitar a leitura do código. Esse nome deve indicar a ideia do dado, como idade, nomeUsuario ou saldo. Com variáveis bem nomeadas, seu programa fica mais fácil de entender e manter.
Tecnicamente, uma variável em Java é uma referência nomeada para um valor de um tipo específico. Isso significa que o compilador verifica se o valor atribuído combina com o tipo declarado. Se o tipo não for compatível, o código não compila, e esse erro aparece antes mesmo do programa rodar.
3.2 Declaração, inicialização e atribuição
No início, é importante separar três ideias:
- declaração: quando você define o tipo e o nome da variável
- inicialização: quando a variável recebe seu primeiro valor
- atribuição: quando você atualiza o valor depois
int idade; // declaração
idade = 19; // inicialização (primeira atribuição)
idade = 20; // nova atribuiçãoEntender essa diferença ajuda a interpretar erros de compilação e também melhora a leitura do código. Em programas maiores, saber quando um valor foi inicializado evita bugs de lógica.
String nomeUsuario = "Ana";
int idade = 19;
double saldo = 42.50;
boolean ativo = true;3.3 Tipos mais usados no começo
String: textoint: número inteirodouble: número com casas decimaisboolean: verdadeiro ou falso
Cada tipo existe para representar uma categoria diferente de informação. Quando você escolhe o tipo correto, evita erros e torna o comportamento do programa mais previsível. No início dos estudos, dominar esses quatro tipos já permite construir vários programas úteis.
Além disso, cada tipo tem um “contrato” de uso. Por exemplo, int não aceita casas decimais e boolean não aceita textos como “sim” ou “nao”. Quando o compilador aponta incompatibilidade, ele está protegendo o programa de estados inválidos.
3.4 Regras para nomes de variáveis
Boas práticas de nomeação deixam a intenção do código explícita. Em Java, use camelCase para variáveis, começando com letra minúscula.
Exemplos recomendados:
totalCarrinhoquantidadeAlunosusuarioAtivo
Evite nomes genéricos como x, valor1 e abc, exceto em exemplos muito curtos. Também evite usar palavras reservadas da linguagem, como class, public e if.
3.5 Precisão e faixa de valores
Ao escolher o tipo, pense também na faixa de valores e na precisão. int é ótimo para contagens inteiras. double é útil para valores com casas decimais, mas pode apresentar pequenas imprecisões em cálculos financeiros.
Para valores de dinheiro em projetos reais, é comum usar BigDecimal em vez de double. Neste momento do curso, double ainda é suficiente para treinar a modelagem de dados e operações básicas.
3.6 Juntando textos (concatenação)
Concatenação é o ato de unir partes de texto para montar uma mensagem completa. Isso é muito comum em saídas personalizadas, como saudações e confirmações de cadastro. No exemplo abaixo, o nome do bot e o nome da pessoa usuária são combinados na mesma frase.
String bot = "JavaBot";
String usuario = "Ana";
System.out.println(bot + ": Olá, " + usuario + "!");3.7 Lendo dados do teclado
Ler dados do teclado permite que o programa reaja ao que a pessoa digita. A classe Scanner é uma das formas mais comuns de fazer isso em Java no começo do curso. Depois de usar o scanner, fechar o recurso com close() é uma boa prática.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Digite seu nome: ");
String nome = sc.nextLine();
System.out.println("Bot: Prazer, " + nome + "!");
sc.close();
}
}Quando você precisar ler números, use métodos específicos como nextInt() e nextDouble(). Depois, se for necessário ler texto com nextLine(), lembre que pode restar uma quebra de linha pendente no buffer. Nesses casos, uma estratégia comum é chamar um nextLine() extra para “limpar” a entrada.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Digite sua idade: ");
int idade = sc.nextInt();
sc.nextLine(); // consome a quebra de linha pendente
System.out.print("Digite seu nome: ");
String nome = sc.nextLine();
System.out.println("Nome: " + nome + " | Idade: " + idade);
sc.close();
}
}3.8 Conversão simples de tipos
Em muitas situações, você recebe um dado como texto e precisa transformar em número. Isso acontece, por exemplo, quando o valor vem de formulário, arquivo ou API.
String textoIdade = "21";
int idade = Integer.parseInt(textoIdade);
String textoAltura = "1.68";
double altura = Double.parseDouble(textoAltura);Se o texto não estiver em formato numérico válido, ocorre erro de execução (NumberFormatException). Mais adiante, no capítulo de tratamento de erros, você verá como lidar com esse cenário de forma robusta.
- Pergunte nome e cidade da pessoa usuária.
- Mostre uma saudação personalizada.
- Teste com 3 pessoas diferentes.
- Adicione uma variável
idadee mostre a idade junto com a saudação. - Crie uma variável booleana
cadastroAtivoe imprima seu valor. - Escreva uma frase explicando no caderno por que cada variável usou aquele tipo.
Neste capítulo, o ganho técnico aparece quando você passa a justificar cada escolha de tipo com base no problema. Ao modelar bem as variáveis, seu código fica mais confiável, mais legível e mais simples de evoluir.
Uma prática eficiente é revisar cada exercício perguntando:
- O nome da variável comunica claramente o que ela representa?
- O tipo escolhido impede valores inválidos para esse contexto?
- O fluxo de entrada e saída de dados está previsível para quem vai manter esse código?
Esse hábito de revisão desenvolve pensamento de engenharia desde os primeiros capítulos. Com o tempo, você passa a escrever programas menores em quantidade de erros e maiores em clareza.