AFF Education Construa seu Futuro

Aula 26 - Operadores Relacionais (igual simples versus duplo)

Operadores Relacionais (igual simples versus duplo)

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 (!=).

Diferenças entre = e ==

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.

Comparação entre = e ==

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

Exemplo: Usando igual simples e igual duplo

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

Operador Diferente (!=)

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

Mais exemplos com operadores relacionais

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().

Exercícios

Teste seus conhecimentos sobre operadores relacionais em Java:

1. Qual é a principal diferença entre = e == em Java?

2. Qual será o resultado da execução do seguinte código?

int a = 5;
int b = 5;
System.out.println(a == b);

3. Para comparar se duas Strings têm o mesmo conteúdo, qual é a forma correta?

4. O que faz o operador != em Java?

5. O código abaixo apresenta um erro comum. Qual é o problema?

int x = 10;
if (x = 20) {
    System.out.println("x é 20");
}

Exercícios de Aplicação AFF Education

Reforce o conteúdo desta aula com mais dois exercícios práticos:

1. Qual a diferença entre = e == em Java?

2. O que ocorre ao escrever if (x = 5) com int x?