Linguagem Java ☕
Bem-vindo ao guia da linguagem Java, uma das linguagens de programação mais populares e versáteis do mundo. Famosa por sua filosofia “escreva uma vez, rode em qualquer lugar” (write once, run anywhere), o Java é fundamental para o desenvolvimento de aplicações web, mobile (Android), e sistemas de grande escala.
🛠️ Instalação e Configuração do Ambiente
Para desenvolver em Java, o primeiro passo é instalar o JDK (Java Development Kit), que é um pacote de software contendo o compilador e outras ferramentas essenciais.
-
Instale o Java JDK:
- Faça o download do JDK (versão LTS, como 11, 17 ou 21, é recomendada) a partir do site oficial da Oracle ou de uma distribuição como o OpenJDK.
- Siga o instalador.
- Configure as Variáveis de Ambiente:
- Crie uma nova variável de ambiente
JAVA_HOMEapontando para a pasta de instalação do JDK (ex:C:\Program Files\Java\jdk-17.0.2). - Adicione o caminho da pasta
bindo JDK à variávelPathdo sistema (ex:%JAVA_HOME%\bin).
- Crie uma nova variável de ambiente
- Para verificar a instalação, abra um terminal e execute o comando
java -version.
-
Escolha uma IDE (Ambiente de Desenvolvimento Integrado): Enquanto o material original foca no Eclipse, as IDEs mais utilizadas atualmente para desenvolvimento Java são o VS Code e o IntelliJ IDEA.
Opção 1: VS Code
- Instale o Visual Studio Code.
- Na aba de extensões, instale o pacote “Extension Pack for Java” da Microsoft. Ele inclui tudo o que é necessário para compilar, executar e depurar código Java.
Opção 2: IntelliJ IDEA
- Baixe a versão Community (gratuita) do IntelliJ IDEA.
- O IntelliJ IDEA é altamente especializado para Java e oferece uma experiência de desenvolvimento muito produtiva, com ferramentas de análise de código e refatoração de ponta.
🚀 Seu Primeiro Programa em Java
Todo programa em Java é contido dentro de uma classe. A execução sempre começa no método main.
// É uma boa prática definir um pacote para organizar suas classes.
package curso;
// Declaração da classe principal.
public class Programa {
// Método principal, ponto de entrada do programa.
public static void main(String[] args) {
// Comando para imprimir uma linha no console.
System.out.println("Ola, Universo Java!");
}
}
📊 Tipos de Dados e Variáveis
Java possui tipos de dados primitivos para armazenar valores simples e tipos por referência (classes) para objetos complexos.
| Significado | Tipo em Java | Valor Padrão | Observação |
|---|---|---|---|
| Número Inteiro | int |
0 | O tipo padrão para inteiros. Use long para valores muito grandes. |
| Número de Ponto Flutuante | double |
0.0 | O tipo padrão para números reais. float oferece precisão simples. |
| Um Único Caractere | char |
'\u0000' |
Armazena um caractere Unicode, sempre entre aspas simples (ex: 'F'). |
| Texto | String |
null |
String é uma classe, não um tipo primitivo, e por isso começa com ‘S’ maiúsculo. Textos são declarados entre aspas duplas (ex: “Beatriz Costa”). |
| Valor Lógico | boolean |
false |
Aceita apenas os valores true ou false. |
📝 Declaração e Atribuição de Variáveis
A declaração de variáveis em Java exige a especificação de um tipo e um nome. A atribuição pode ser feita na mesma linha ou posteriormente.
package curso;
import java.util.Locale; // Importa a classe Locale para formatação.
public class Programa {
public static void main(String[] args) {
// Define o Locale para US para usar o ponto como separador decimal.
Locale.setDefault(Locale.US);
// Declaração e inicialização de variáveis.
int idade = 28;
double salario = 8200.50;
double altura = 1.65;
char genero = 'F';
String nome = "Beatriz Costa";
// Saída de dados.
System.out.println("NOME = " + nome);
System.out.println("IDADE = " + idade);
System.out.println("GENERO = " + genero);
// Usando String.format para formatar a saída com 2 casas decimais.
System.out.println("ALTURA = " + String.format("%.2f", altura));
System.out.println("SALARIO = " + String.format("%.2f", salario));
}
}
🔢 Operadores
Os operadores em Java são herdados de C/C++ e seguem a mesma lógica.
Aritméticos
| Operador | Significado |
|---|---|
+ |
Adição |
- |
Subtração |
* |
Multiplicação |
/ |
Divisão |
% |
Resto da divisão (“mod”) |
Comparativos
| Operador | Significado |
|---|---|
< |
Menor |
> |
Maior |
<= |
Menor ou igual |
>= |
Maior ou igual |
== |
Igual |
!= |
Diferente |
Lógicos
| Operador | Significado |
|---|---|
&& |
E |
|| |
OU |
! |
NÃO |
📥 Entrada de Dados com a Classe Scanner
Para ler dados do teclado em Java, utilizamos a classe Scanner, que deve ser importada da biblioteca java.util.
- Importe a classe:
import java.util.Scanner;. - Crie um objeto Scanner:
Scanner sc = new Scanner(System.in);. - Use os métodos de leitura:
nextInt(): Lê um número inteiro.nextDouble(): Lê um número double.next(): Lê a próxima palavra (até o espaço).nextLine(): Lê a linha inteira de texto.next().charAt(0): Lê uma palavra e pega apenas o primeiro caractere.
- Feche o Scanner:
sc.close();para liberar os recursos do sistema.
Atenção à Quebra de Linha Pendente:
Quando você lê um número (nextInt ou nextDouble), o cursor de leitura para após o número, deixando o “Enter” (
) no buffer de entrada. Se a próxima leitura for um nextLine(), ele lerá essa quebra de linha vazia.
Solução: Consuma a quebra de linha pendente com um sc.nextLine() extra antes de ler o texto.
package curso;
import java.util.Locale;
import java.util.Scanner;
public class Programa {
public static void main(String[] args) {
Locale.setDefault(Locale.US);
Scanner sc = new Scanner(System.in);
String nomeCompleto;
int idade;
double salario;
char genero;
System.out.print("Digite seu nome completo: ");
nomeCompleto = sc.nextLine();
System.out.print("Digite sua idade: ");
idade = sc.nextInt();
System.out.print("Digite seu salario: ");
salario = sc.nextDouble();
System.out.print("Digite seu genero (F/M): ");
genero = sc.next().charAt(0);
System.out.println("
--- DADOS REGISTRADOS ---");
System.out.println("Nome: " + nomeCompleto);
System.out.println("Idade: " + idade);
System.out.println("Salario: " + String.format("%.2f", salario));
System.out.println("Genero: " + genero);
sc.close();
}
}
🔀 Estruturas de Controle
Estrutura Condicional (if-else)
Permite que o programa execute diferentes caminhos com base em condições.
// ... (dentro do método main)
Scanner sc = new Scanner(System.in);
System.out.print("Digite a hora atual (0-23): ");
int hora = sc.nextInt();
if (hora < 12) {
System.out.println("Bom dia!");
} else if (hora < 18) {
System.out.println("Boa tarde!");
} else {
System.out.println("Boa noite!");
}
sc.close();
Estrutura de Repetição while
O bloco de código é executado enquanto a condição for verdadeira.
// ... (dentro do método main)
Scanner sc = new Scanner(System.in);
int numero;
int soma = 0;
System.out.print("Digite um numero (0 para sair): ");
numero = sc.nextInt();
while (numero != 0) {
soma += numero;
System.out.print("Digite outro numero (0 para sair): ");
numero = sc.nextInt();
}
System.out.println("SOMA FINAL = " + soma);
sc.close();
Estrutura de Repetição for
Ideal para laços que precisam ser executados um número específico de vezes.
// ... (dentro do método main)
Scanner sc = new Scanner(System.in);
System.out.print("Quantos numeros serao somados? ");
int N = sc.nextInt();
int soma = 0;
for (int i = 0; i < N; i++) {
System.out.print("Digite o valor #" + (i + 1) + ": ");
int x = sc.nextInt();
soma += x;
}
System.out.println("SOMA = " + soma);
sc.close();
📏 Vetores e Matrizes
Vetores (Arrays)
Em Java, vetores são objetos que armazenam uma coleção de tamanho fixo de elementos do mesmo tipo.
// ... (dentro do método main)
Locale.setDefault(Locale.US);
Scanner sc = new Scanner(System.in);
System.out.print("Quantos numeros voce vai digitar? ");
int N = sc.nextInt();
// Declaração e instanciação do vetor
double[] vetor = new double[N];
for (int i = 0; i < N; i++) {
System.out.print("Digite um numero: ");
vetor[i] = sc.nextDouble();
}
System.out.println("
NUMEROS DIGITADOS:");
for (int i = 0; i < N; i++) {
System.out.println(String.format("%.1f", vetor[i]));
}
sc.close();
Matrizes (Arrays Bidimensionais)
São vetores de vetores, úteis para representar dados em formato de tabela.
// ... (dentro do método main)
Scanner sc = new Scanner(System.in);
System.out.print("Quantas linhas tera a matriz? ");
int M = sc.nextInt();
System.out.print("Quantas colunas tera a matriz? ");
int N = sc.nextInt();
// Declaração e instanciação da matriz
int[][] matriz = new int[M][N];
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
System.out.print("Elemento [" + i + "," + j + "]: ");
matriz[i][j] = sc.nextInt();
}
}
System.out.println("
MATRIZ DIGITADA:");
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
System.out.print(matriz[i][j] + " ");
}
System.out.println(); // Pula para a próxima linha
}
sc.close();
🐞 Depuração (Debugging) em Java
Depurar é o processo de encontrar e corrigir bugs no seu código. Tanto o VS Code quanto o IntelliJ IDEA possuem excelentes ferramentas de depuração visual. Os comandos do material original eram para o Eclipse.
Debugging no VS Code e IntelliJ IDEA
Os conceitos são os mesmos, apenas os atalhos podem variar.
- Habilitar/Desabilitar Breakpoint: Clique na margem à esquerda do número da linha onde você quer que a execução pause.
- Iniciar o Debug:
- IntelliJ: Pressione
Shift + F9ou clique no ícone de inseto ao lado da configuração de execução. - VS Code: Pressione
F5ou vá para a aba “Run and Debug” e inicie a sessão.
- IntelliJ: Pressione
- Controlar a Execução:
- Step Over (Passar por cima): Executa a linha atual e para na próxima. (F8 no IntelliJ, F10 no VS Code).
- Continue (Continuar): Continua a execução até o próximo breakpoint ou o fim do programa. (F9 no IntelliJ, F5 no VS Code).
- Inspecionar Variáveis: A aba “Debug” em ambas as IDEs mostrará uma janela “Variables” onde você pode ver e monitorar o valor das variáveis em tempo real.