Java Fundamentos Básico
Operadores e conversões
Em Java, operadores aritméticos (+, -, *, /, %) e lógicos (&&, ||, !) são fundamentais para manipular dados. A divisão inteira (/) entre dois inteiros descarta a parte fracionária, enquanto o operador % retorna o resto. Já os operadores lógicos combinam expressões booleanas e usam curto-circuito: && só avalia o segundo operando se o primeiro for true, e || só avalia o segundo se o primeiro for false.
Conversões de tipo podem ser implícitas (promoção numérica) ou explícitas (casting). A promoção ocorre quando um valor de tipo menor é convertido automaticamente para um tipo maior, como int para double. O casting é necessário para converter um tipo maior para um menor, como double para int, e pode causar perda de informação.
Entender esses conceitos evita erros comuns, como divisão inteira inesperada ou perda de precisão. Por exemplo, 5 / 2 resulta em 2, não 2.5, a menos que pelo menos um operando seja double. O casting explícito (int) 3.9 trunca o valor para 3, descartando a parte decimal.
Pontos-chave
- A divisão entre inteiros (
/) descarta a parte decimal; para obter resultado real, um dos operandos deve serdouble. - O operador
%retorna o resto da divisão inteira e é útil para verificar paridade ou ciclos. - A promoção numérica converte automaticamente tipos menores para maiores em operações mistas (ex.:
int+double→double). - O casting explícito
(tipo)converte tipos maiores para menores, podendo truncar ou perder precisão. - Operadores lógicos
&&e||têm curto-circuito, evitando avaliações desnecessárias e possíveis erros.
public class OperadoresConversoes {
public static void main(String[] args) {
// Aritméticos e divisão inteira
int a = 7, b = 3;
System.out.println("Divisão inteira: " + (a / b)); // 2
System.out.println("Resto: " + (a % b)); // 1
// Promoção numérica: int + double -> double
double soma = a + 2.5;
System.out.println("Promoção: " + soma); // 9.5
// Casting explícito: double para int (trunca)
double pi = 3.14159;
int piInt = (int) pi;
System.out.println("Casting: " + piInt); // 3
// Operadores lógicos com curto-circuito
boolean cond1 = false;
boolean cond2 = true;
System.out.println("E lógico: " + (cond1 && cond2)); // false
System.out.println("Ou lógico: " + (cond1 || cond2)); // true
System.out.println("Negação: " + (!cond1)); // true
// Exemplo de curto-circuito: evita divisão por zero
int divisor = 0;
if (divisor != 0 && 10 / divisor > 1) {
System.out.println("Isso não será impresso");
} else {
System.out.println("Curto-circuito evitou erro");
}
}
}