Operadores
Operadores são usados para realizar operações em variáveis e valores. Esta lição cobre os vários operadores em Java.
Operadores Aritméticos
| Operador | Descrição | Exemplo | Resultado |
|---|---|---|---|
+ |
Adição | 5 + 3 |
8 |
- |
Subtração | 5 - 3 |
2 |
* |
Multiplicação | 5 * 3 |
15 |
/ |
Divisão | 5 / 3 |
1 (divisão inteira) |
% |
Módulo (resto) | 5 % 3 |
2 |
++ |
Incremento | i++ |
i aumenta em 1 |
-- |
Decremento | i-- |
i diminui em 1 |
Exemplo: Operações Aritméticas
public class ArithmeticDemo {
public static void main(String[] args) {
int a = 10, b = 3;
System.out.println("a + b = " + (a + b)); // 13
System.out.println("a - b = " + (a - b)); // 7
System.out.println("a * b = " + (a * b)); // 30
System.out.println("a / b = " + (a / b)); // 3 (divisão inteira, decimais truncados)
System.out.println("a % b = " + (a % b)); // 1
// Divisão de ponto flutuante
double c = 10.0, d = 3.0;
System.out.println("c / d = " + (c / d)); // 3.3333...
}
}
Incremento e Decremento
int i = 5;
// Pós-incremento: usa primeiro, depois aumenta
int a = i++; // a = 5, i = 6
// Pré-incremento: aumenta primeiro, depois usa
int b = ++i; // b = 7, i = 7
Operadores de Atribuição
| Operador | Descrição | Exemplo | Equivalente a |
|---|---|---|---|
= |
Atribuição | a = 5 |
— |
+= |
Adicionar e atribuir | a += 3 |
a = a + 3 |
-= |
Subtrair e atribuir | a -= 3 |
a = a - 3 |
*= |
Multiplicar e atribuir | a *= 3 |
a = a * 3 |
/= |
Dividir e atribuir | a /= 3 |
a = a / 3 |
%= |
Módulo e atribuir | a %= 3 |
a = a % 3 |
Exemplo: Operações de Atribuição
public class AssignmentDemo {
public static void main(String[] args) {
int a = 10;
System.out.println("Valor inicial: " + a); // 10
a += 5;
System.out.println("a += 5: " + a); // 15
a -= 3;
System.out.println("a -= 3: " + a); // 12
a *= 2;
System.out.println("a *= 2: " + a); // 24
a /= 4;
System.out.println("a /= 4: " + a); // 6
a %= 4;
System.out.println("a %= 4: " + a); // 2
}
}
Operadores de Comparação
Operadores de comparação retornam um valor booleano (true ou false).
| Operador | Descrição | Exemplo | Resultado |
|---|---|---|---|
== |
Igual a | 5 == 5 |
true |
!= |
Diferente de | 5 != 3 |
true |
> |
Maior que | 5 > 3 |
true |
< |
Menor que | 5 < 3 |
false |
>= |
Maior ou igual a | 5 >= 5 |
true |
<= |
Menor ou igual a | 5 <= 3 |
false |
Exemplo: Operações de Comparação
public class ComparisonDemo {
public static void main(String[] args) {
int a = 10, b = 20;
System.out.println("a == b: " + (a == b)); // false
System.out.println("a != b: " + (a != b)); // true
System.out.println("a > b: " + (a > b)); // false
System.out.println("a < b: " + (a < b)); // true
System.out.println("a >= 10: " + (a >= 10)); // true
System.out.println("a <= 5: " + (a <= 5)); // false
}
}
Operadores Lógicos
| Operador | Descrição | Exemplo | Resultado |
|---|---|---|---|
&& |
E lógico | true && false |
false |
|| |
OU lógico | true || false |
true |
! |
NÃO lógico | !true |
false |
Tabela Verdade dos Operadores Lógicos
| A | B | A && B | A || B | !A |
|---|---|---|---|---|
| true | true | true | true | false |
| true | false | false | true | false |
| false | true | false | true | true |
| false | false | false | false | true |
Exemplo: Operações Lógicas
public class LogicDemo {
public static void main(String[] args) {
int age = 25;
boolean hasID = true;
// Idade >= 18 e tem ID
boolean canEnter = (age >= 18) && hasID;
System.out.println("Pode entrar: " + canEnter); // true
// Idade < 12 ou > 60
boolean isSpecial = (age < 12) || (age > 60);
System.out.println("Categoria especial: " + isSpecial); // false
// NÃO lógico
boolean isAdult = age >= 18;
System.out.println("É adulto: " + isAdult); // true
System.out.println("Não é adulto: " + !isAdult); // false
}
}
&& para se o lado esquerdo for false; || para se o lado esquerdo for true. O lado direito não é avaliado nesses casos.
Operador Ternário
O operador ternário é uma abreviação para if-else.
// Sintaxe: condição ? valor1 : valor2
int max = (a > b) ? a : b;
Exemplo: Operador Ternário
public class TernaryDemo {
public static void main(String[] args) {
int a = 10, b = 20;
// Encontrar máximo
int max = (a > b) ? a : b;
System.out.println("Máximo: " + max); // 20
// Verificar ímpar ou par
int num = 7;
String result = (num % 2 == 0) ? "par" : "ímpar";
System.out.println(num + " é " + result); // 7 é ímpar
// Valor absoluto
int x = -5;
int abs = (x >= 0) ? x : -x;
System.out.println("Valor absoluto: " + abs); // 5
}
}
Precedência de Operadores
Operadores com maior precedência são avaliados primeiro. Use parênteses para alterar a precedência.
| Precedência | Operador | Descrição |
|---|---|---|
| 1 | () |
Parênteses |
| 2 | ! ++ -- |
Operadores unários |
| 3 | * / % |
Multiplicação, divisão, módulo |
| 4 | + - |
Adição, subtração |
| 5 | < <= > >= |
Comparação |
| 6 | == != |
Igualdade |
| 7 | && |
E lógico |
| 8 | || |
OU lógico |
| 9 | ?: |
Operador ternário |
| 10 | = += -= etc. |
Atribuição |
Exemplo: Precedência
public class PrecedenceDemo {
public static void main(String[] args) {
// Multiplicação tem maior precedência que adição
int result1 = 2 + 3 * 4;
System.out.println("2 + 3 * 4 = " + result1); // 14, não 20
// Use parênteses para alterar a precedência
int result2 = (2 + 3) * 4;
System.out.println("(2 + 3) * 4 = " + result2); // 20
}
}
Promoção de Tipo
Quando valores de diferentes tipos são misturados em uma operação, o tipo menor é automaticamente promovido para o tipo maior.
public class TypePromotion {
public static void main(String[] args) {
// int + long → long
int a = 10;
long b = 20;
long c = a + b;
// int + double → double
int d = 10;
double e = 3.14;
double f = d + e;
// byte + byte → int
byte g = 10;
byte h = 20;
// byte i = g + h; // Erro! O resultado é do tipo int
int i = g + h; // Correto
}
}
❓ Perguntas Frequentes
P: Qual é a diferença entre == e equals? R: == compara valores para primitivos e endereços para referências. equals compara conteúdo de objetos. Use equals para comparação de strings.
P: Qual é a diferença entre i++ e ++i? R: i++ usa o valor primeiro e depois incrementa; ++i incrementa primeiro e depois usa. Quando usado sozinho, o efeito é o mesmo. A diferença só importa em expressões.
P: Por que 0.1 + 0.2 != 0.3? R: Números de ponto flutuante têm problemas de precisão. 0.1 e 0.2 não podem ser representados exatamente em binário. Use comparação de intervalo para valores de ponto flutuante.
📖 Resumo
- Operadores aritméticos: + - * / % ++ --
- Operadores de atribuição: = += -= *= /= %=
- Operadores de comparação: == != > < >= <=
- Operadores lógicos: && || !
- Operador ternário: condição ? valor1 : valor2
- Operadores têm precedência; use parênteses em expressões complexas
- Promoção de tipo: tipos menores são automaticamente promovidos para tipos maiores
📝 Exercícios
- Prática aritmética: Insira um número de segundos e converta para o formato "X horas X minutos X segundos"
- Prática de comparação: Determine se um ano é bissexto (divisível por 4 mas não por 100, ou divisível por 400)
- Prática ternária: Insira três números e encontre o máximo usando o operador ternário
Próxima Lição
Na próxima lição, aprenderemos sobre Instruções Condicionais — tomando decisões em seus programas.



