Ao configurar um projeto Java, é necessário primeiro criar um módulo para gerar a estrutura de diretórios src. Configure o JDK e a lignuagem nas configurações do projeto.
Java suporta três formas de comentários: linha única com //, múltiplas linhas com /* */, e documentação com /** */. Exemplo:
public class ProgramaDemo {
public static void main(String[] args) {
// Saída de teste
/*
Comentário em bloco
para múltiplas linhas
*/
System.out.println("Olá, desenvolvedor!");
}
}
Identificadores e palavras-chave são sensíveis a maiúsculas e minúsculas. Palavras reservadas não podem ser usadas como nomes de variáveis.
Java é uma linguagem fortemente tipada: todas as variáveis devem ser declaradas com tipo antes do uso. Um erro comum é tentar imprimir uma variável não inicializada:
public class ErroTipagem {
public static void main(String[] args) {
int quantidade;
System.out.println(quantidade); // Erro de compilação
}
}
Correção:
public class CorretoTipagem {
public static void main(String[] args) {
int total = 100;
System.out.println(total);
}
}
Existem oito tipos primitivos: int, byte, short, long, float, double, char e boolean. Tipos como long requerem sufixo L e float sufixo F.
public class TiposPrimitivosDemo {
public static void main(String[] args) {
int contador = 50;
byte minimo = 100;
short meio = 2000;
long extenso = 123456789L;
float precisao = 9.81F;
double duplo = 3.14159D;
char simbolo = '@';
boolean ativo = true;
// String é uma classe, não primitivo
String texto = "Exemplo";
}
}
Para inteiros em diferentes bases: decimal padrão, octal com prefixo 0, hexadecimal com 0x. Exemplo:
public class BasesDemo {
public static void main(String[] args) {
int dez = 10; // Decimal
int oito = 010; // Octal = 8
int dezesseis = 0x10; // Hexadecimal = 16
System.out.println("Decimal: " + dez);
System.out.println("Octal: " + oito);
System.out.println("Hexadecimal: " + dezesseis);
}
}
Cuidado ao comparar números de ponto flutuante devido a erros de arredondamento. Caracteres são baseados no Unicode, com valores inteiros associados:
public class CaractereDemo {
public static void main(String[] args) {
char letra = 'M';
System.out.println("Caractere: " + letra);
System.out.println("Código Unicode: " + (int)letra);
char escapado = '\u004D'; // 'M'
System.out.println("Escapado: " + escapado);
}
}
Caracteres de escape incluem \t para tabulação e \n para nova linha. Para booleanos, use expressões concisas:
public class BooleanDemo {
public static void main(String[] args) {
boolean condicao = true;
if (condicao) {
System.out.println("Ativo");
}
// Em vez de if (condicao == true) para simplificar
}
}
Conversão de tipos pode ser implícita (de menor para maior) ou explícita (com cast). Cast de inteiros grandes para byte pode causar overflow:
public class ConversaoDemo {
public static void main(String[] args) {
int grande = 300;
byte pequeno = (byte)grande; // Overflow, resultado 44
System.out.println("Original: " + grande);
System.out.println("Convertido: " + pequeno);
double auto = grande; // Conversão automática
System.out.println("Auto-conversão: " + auto);
}
}
Strings são objetos em Java. A comparação com == verifica referência, não conteúdo:
public class StringDemo {
public static void main(String[] args) {
String s1 = new String("teste");
String s2 = new String("teste");
System.out.println(s1 == s2); // false, objetos diferentes
String s3 = "teste";
String s4 = "teste";
System.out.println(s3 == s4); // true, mesma referência na pool
}
}