E aí, pessoal! Beleza? Hoje nós vamos ver e explicar como funciona o operador XOR. Vamos lá?

O que é o operador XOR?

O XOR é um operador que analisa uma comparação entre expressões e seu retorno só será true se somente uma das expressões forem diferentes, ou seja, se você tem 5 expressões aninhadas e somente uma delas é verdadeira, retornará true. No entanto, caso você tenha 5 expressões true e apenas umas delas false, também retornará true.

Apesar de bem “esquecida” e pouco utilizada, hoje em dia é muito interessante que se tenha esse conhecimento para que você possa abranger mais opções de codificação.

Por ser um pouco mais “complexo”, muitas pessoas têm receio de estudá-lo, o que faz com que ele seja subestimado. Entretanto, meu único objetivo neste artigo é deixar isso extremamente claro e didático pra vocês!

Exemplos

O símbolo que usamos no XOR é “^“, e agora, vamos fazer uma tabela de como o XOR se comporta.

Lembrando que no lugar de [FALSE] e [TRUE] pode, sem problemas, ser uma expressão que tenha o resultado true ou false, por exemplo, substituir FALSE por 1>4, irá funcionar da mesma forma!

Expressões básicas:

FALSE ^ FALSE = FALSE

TRUE ^ FALSE = TRUE

FALSE ^ TRUE = TRUE

TRUE ^ TRUE = FALSE

Expressões medianas:

FALSE ^ FALSE ^FALSE ^FALSE = FALSE

TRUE ^ FALSE ^ FALSE ^ FALSE= TRUE

FALSE ^ TRUE ^ TRUE ^ TRUE = TRUE

FALSE ^ TRUE ^ FALSE ^ TRUE= FALSE

TRUE ^ TRUE ^ TRUE ^ TRUE = FALSE

Como já dito anteriormente, sua única condição é que apenas uma das suas expressões ou valores seja true ou apenas uma false para que ele retorne true, caso contrário o retorno será false.

Então, nós podemos ter inúmeras condições e expressões aninhadas, e todas elas tem que retornar um valor booleano para se encaixar no XOR.

E agora vamos dar um exemplo um pouco mais complexo! Nesse cenário, iremos usar um método que verificara se um número é par ou não, e nisso ele retornará true ou false.

Método:

public static boolean numeroPar(int numero) {
        return numero % 2 == 0;
}

Dessa forma, nós podemos assimilar com o dia a dia onde você tem métodos e expressões, e eles poderão ser usados juntamente do operador XOR.

Nós podemos fazer diversas coisas com o XOR, alguns exemplos são:

4 % 2 == 0 ^ 1 > 10 ^ numeroPar(3) //TRUE

Portanto, o XOR deve ser feito apenas com valores booleanos ou expressões que retornam valores booleanos.

Um exemplo da sintaxe caso ainda estejam com dúvidas:

valorBooleano ^ valorBooleano ^ valorBooleano ^ valorBooleano

Essa expressão toda retornará um valor booleano true ou false, então você tem que se preparar para recebê-lo adicionando em uma variável, por exemplo.

Lâmpadas usando XOR

Esse exemplo veio de uma conversa com um aluno, vou explicar como vai servir pra gente entender melhor o XOR.

Havia uma lâmpada que tinha dois interruptores ligados à ela, e esses interruptores estivessem juntos pra cima ou pra baixo a lâmpada não ligaria, só ligaria se um dos interruptores estivesse para o lado contrário do outro.

Essa é uma forma bem simples de assimilar com a realidade e creio que faça vocês entenderem com mais facilidade.

Conclusão

Pessoal, espero que tenham perdido um pouco do “medo” de usar esse operador e passem a pensar nele com mais frequência, que certamente é útil mas são pouquíssimos programadores que usam.

Espero que tenha agregado com o conhecimento e vocês de alguma forma e ajudado. Bons estudos e até a próxima!

Veja também…

CRUD com JPA e Hibernate – Java

Entenda o operador de coalescência nula (??) – JavaScript