Java tem operadores que comparam números e fornecem resultados verdadeiro/falso. Dois operadores importantes são o símbolo igual (==) e o símbolo diferente (!=).
Regra importante: Repare que o símbolo igual simples (=) é usado para atribuir valores à variáveis e pode ser usado também para atribuir uma equação matemática à uma variável. Então igual simples significa atribuir na computação.
Quando se deseja comparar dois valores dando resposta verdadeiro ou falso, você o duplo igual (==). O duplo igual devolve um booleano (true or false) numa operação relacional. O igual simples (=) não devolve um booleano, ele atribui valores.
| Operador | Nome | Função | Exemplo | Resultado |
|---|---|---|---|---|
| = | Igual simples | Atribuir um valor a uma variável | int x = 5; | A variável x recebe o valor 5 |
| == | Igual duplo | Comparar se dois valores são iguais | x == 5 | Retorna true se x for igual a 5, false caso contrário |
public class IgualSimplesVsDuplo {
public static void main(String[] args) {
// Uso do igual simples (=) para atribuição
int a = 10; // Atribuindo o valor 10 à variável a
System.out.println("Valor de a: " + a);
// Reatribuindo um novo valor
a = 20; // Atribuindo o valor 20 à variável a (sobrescrevendo o valor anterior)
System.out.println("Novo valor de a: " + a);
// Usando o igual duplo (==) para comparação
boolean comparacao = (a == 20); // Verifica se a é igual a 20
System.out.println("a é igual a 20? " + comparacao);
// Outra comparação
boolean outraComparacao = (a == 10); // Verifica se a é igual a 10
System.out.println("a é igual a 10? " + outraComparacao);
// Erro comum: usar = em vez de == em condições
// O código abaixo NÃO faz o que parece!
int x = 5;
// if (x = 10) { // Isso seria um erro de compilação em Java
// System.out.println("x é igual a 10");
// }
// Forma correta
if (x == 10) {
System.out.println("x é igual a 10");
} else {
System.out.println("x não é igual a 10");
}
// Mostrando o valor atual de x
System.out.println("Valor de x: " + x); // x ainda é 5
}
}
Valor de a: 10
Novo valor de a: 20
a é igual a 20? true
a é igual a 10? false
x não é igual a 10
Valor de x: 5
O operador não igual ou diferente (!=) é outro operador relacional importante, que verifica se dois valores são diferentes.
O símbolo ! significa "não" em Java, sendo um operador de negação lógica.
public class OperadorDiferente {
public static void main(String[] args) {
int a = 10;
int b = 20;
// Usando o operador de igualdade
boolean igual = (a == b);
System.out.println("a == b: " + igual);
// Usando o operador diferente
boolean diferente = (a != b);
System.out.println("a != b: " + diferente);
// Testando com valores iguais
b = 10; // Agora b também é 10
igual = (a == b);
diferente = (a != b);
System.out.println("\nDepois de mudar b para 10:");
System.out.println("a == b: " + igual);
System.out.println("a != b: " + diferente);
// Usando em uma estrutura condicional
if (a != 20) {
System.out.println("\na não é igual a 20");
}
if (a == b) {
System.out.println("a é igual a b");
}
}
}
a == b: false
a != b: true
Depois de mudar b para 10:
a == b: true
a != b: false
a não é igual a 20
a é igual a b
public class MaisExemplosOperadoresRelacionais {
public static void main(String[] args) {
int idade = 18;
boolean maioridade = (idade >= 18);
System.out.println("Idade: " + idade);
System.out.println("É maior de idade? " + maioridade);
// Comparando strings (cuidado!)
String nome1 = "João";
String nome2 = "João";
String nome3 = new String("João"); // Criando uma nova instância de String
// Comparando referências (== compara referências para objetos)
System.out.println("\nComparando strings com ==:");
System.out.println("nome1 == nome2: " + (nome1 == nome2)); // true (mesmo objeto no pool de strings)
System.out.println("nome1 == nome3: " + (nome1 == nome3)); // false (objetos diferentes)
// Forma correta de comparar conteúdo de strings
System.out.println("\nComparando strings com equals():");
System.out.println("nome1.equals(nome2): " + nome1.equals(nome2)); // true
System.out.println("nome1.equals(nome3): " + nome1.equals(nome3)); // true
// Outros exemplos
double preco = 25.99;
boolean barato = (preco < 20.00);
System.out.println("\nPreço: " + preco);
System.out.println("É barato? " + barato);
// Comparação combinada com operadores lógicos
boolean promocao = (preco >= 20.00 && preco <= 30.00);
System.out.println("Está na faixa de promoção? " + promocao);
}
}
Idade: 18
É maior de idade? true
Comparando strings com ==:
nome1 == nome2: true
nome1 == nome3: false
Comparando strings com equals():
nome1.equals(nome2): true
nome1.equals(nome3): true
Preço: 25.99
É barato? false
Está na faixa de promoção? true
Importante: Ao comparar objetos (como Strings), o operador == compara as referências (se são o mesmo objeto na memória), não os valores. Para comparar o conteúdo dos objetos, use o método equals().
Teste seus conhecimentos sobre operadores relacionais em Java:
Reforce o conteúdo desta aula com mais dois exercícios práticos: