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!