{"id":8932,"date":"2020-03-22T13:45:59","date_gmt":"2020-03-22T08:15:59","guid":{"rendered":"https:\/\/java2blog.com\/?p=8932"},"modified":"2021-01-11T18:38:30","modified_gmt":"2021-01-11T13:08:30","slug":"xor-operator-java","status":"publish","type":"post","link":"https:\/\/java2blog.com\/xor-operator-java\/","title":{"rendered":"XOR operator in java"},"content":{"rendered":"<p>In this tutorial, we will see about XOR operator in <a href=\"https:\/\/java2blog.com\/core-java-tutorial-for-beginners-experienced\/\" rel=\"noopener noreferrer\" target=\"_blank\">java<\/a>.<\/p>\n<p><code>XOR operator<\/code> or <code>exclusive OR<\/code> takes two boolean operands and returns true if two boolean operands are different.<\/p>\n<p>XOR operator can be used when both the boolean conditions can&#8217;t be true simultaneously.<\/p>\n<p>Here is truth table for <code>XOR operator<\/code>.<br \/>\n\n<table id=\"tablepress-20\" class=\"tablepress tablepress-id-20\">\n<thead>\n<tr class=\"row-1 odd\">\n\t<th class=\"column-1\">P<\/th><th class=\"column-2\">Q<\/th><th class=\"column-3\">P XOR Q<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-hover\">\n<tr class=\"row-2 even\">\n\t<td class=\"column-1\">true<\/td><td class=\"column-2\">true<\/td><td class=\"column-3\">false<\/td>\n<\/tr>\n<tr class=\"row-3 odd\">\n\t<td class=\"column-1\">true<\/td><td class=\"column-2\">false<\/td><td class=\"column-3\">true<\/td>\n<\/tr>\n<tr class=\"row-4 even\">\n\t<td class=\"column-1\">false<\/td><td class=\"column-2\">true<\/td><td class=\"column-3\">true<\/td>\n<\/tr>\n<tr class=\"row-5 odd\">\n\t<td class=\"column-1\">false<\/td><td class=\"column-2\">false<\/td><td class=\"column-3\">false<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-20 from cache -->\n<div id = 'vdo_ai_div'><\/div>\n<p><script>(function(v,d,o,ai){ai=d.createElement('script');ai.defer=true;ai.async=true;ai.src=v.location.protocol+o;d.head.appendChild(ai);})(window, document, '\/\/a.vdo.ai\/core\/java2blog\/vdo.ai.js');<\/script><br \/>\nLet&#8217;s say you have <code>Person<\/code> class and you want to <a href=\"https:\/\/java2blog.com\/java-8-stream-filter-examples\/\" rel=\"noopener noreferrer\" target=\"_blank\">filter<\/a> <code>persons who is either Male or Adult but not both<\/code> from <a href=\"https:\/\/java2blog.com\/arraylist-in-java-with-example\/\" rel=\"noopener noreferrer\" target=\"_blank\">list<\/a> of persons.<\/p>\n<pre class=\"lang:java decode:1 \" >\npackage org.arpit.java2blog;\n\npublic class Person {\n\n    String name;\n    int age;\n    String gender;\n\n    public Person(String name, int age, String gender) {\n        super();\n        this.name = name;\n        this.age = age;\n        this.gender = gender;\n    };\n\n    \/\/ getters and setters\n\n    public boolean isMale()\n    {\n        if(gender.equalsIgnoreCase(\"Male\"))\n        {\n            return true;\n        }\n        return false;\n    }\n\n    public boolean isAdult()\n    {\n        if(age>=18)\n        {\n            return true;\n        }\n        return false;\n    }\n\n    public String toString()\n    {\n        return \"Name:\"+name+\" Age:\"+age+\" Gender:\"+gender;\n    }\n}\n<\/pre>\n<p>Create Main classed named <code>PersonXORMain.java<\/code><\/p>\n<pre class=\"lang:java decode:1 \" >\npackage org.arpit.java2blog;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class PersonXORMain {\n\n  public static void main(String[] args) {\n    \/\/ Filter list with if person is either male or greater than 18 but not both\n\n    List&lt;Person&gt; personList = getPersonList();\n    List&lt;Person&gt; filteredList = new ArrayList&lt;&gt;();\n    for(Person p :personList)\n    {\n      if((p.isMale() && !p.isAdult()) || (!p.isMale() && p.isAdult()))\n      {\n        filteredList.add(p);\n      }\n    }\n    System.out.println(filteredList);\n  }\n\n  public static List&lt;Person&gt; getPersonList()\n  {\n    List&lt;Person&gt; personList=new ArrayList&lt;&gt;();\n    Person p1 = new Person(\"John\",21,\"Male\");\n    Person p2 = new Person(\"Martin\",17,\"Male\");\n    Person p3 = new Person(\"Mary\",16,\"Female\");\n    Person p4 = new Person(\"Amy\",25,\"Female\");\n\n    personList.add(p1);\n    personList.add(p2);\n    personList.add(p3);\n    personList.add(p4);\n\n    return personList;\n  }\n}\n<\/pre>\n<p><strong>Output:<\/strong><\/p>\n<div class=\"content-box-purple\">\n[Name:Martin Age:17 Gender:Male, Name:Amy Age:25 Gender:Female]\n<\/div>\n<p>As you can see we are able to achieve the condition with help of <code>&&<\/code> and <code>||<\/code> operators but <a href=\"https:\/\/java2blog.com\/if-else-statement-java\/\" rel=\"noopener noreferrer\" target=\"_blank\">if statement<\/a> looks quite verbose.<\/p>\n<pre class=\"lang:java decode:1 \" >\nif((p.isMale() && !p.isAdult()) || (!p.isMale() && p.isAdult()))\n<\/pre>\n<p>You can use <code>XOR<\/code> operator to achieve the same.<\/p>\n<pre class=\"lang:java decode:1 \" >\nif((p.isMale() ^ p.isAdult()))\n<\/pre>\n<p>Replace <code>if((p.isMale() && !p.isAdult()) || (!p.isMale() && p.isAdult()))<\/code> with <code>if((p.isMale() ^ p.isAdult()))<\/code> and you should be able to achieve same results.<\/p>\n<h2>BitWise XOR operator<\/h2>\n<p><code>XOR operator<\/code> works with primitive type as well. Bitwise XOR operator will always return output as 1 if either of its input 1 but not both.<br \/>\nHere is truth table for BitWise XOR operator.<br \/>\n\n<table id=\"tablepress-21\" class=\"tablepress tablepress-id-21\">\n<thead>\n<tr class=\"row-1 odd\">\n\t<th class=\"column-1\">P<\/th><th class=\"column-2\">Q<\/th><th class=\"column-3\">P XOR Q<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-hover\">\n<tr class=\"row-2 even\">\n\t<td class=\"column-1\">1<\/td><td class=\"column-2\">1<\/td><td class=\"column-3\">0<\/td>\n<\/tr>\n<tr class=\"row-3 odd\">\n\t<td class=\"column-1\">1<\/td><td class=\"column-2\">0<\/td><td class=\"column-3\">1<\/td>\n<\/tr>\n<tr class=\"row-4 even\">\n\t<td class=\"column-1\">0<\/td><td class=\"column-2\">1<\/td><td class=\"column-3\">1<\/td>\n<\/tr>\n<tr class=\"row-5 odd\">\n\t<td class=\"column-1\">0<\/td><td class=\"column-2\">0<\/td><td class=\"column-3\">0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-21 from cache -->\n<p>Let&#8217;s see this with the help of example.<\/p>\n<pre class=\"lang:java decode:1 \" >\npackage org.arpit.java2blog;\n\npublic class BitWiseXORMain {\n\n    public static void main(String[] args) {\n        int i1 = 2;\n        int i2 = 3;\n\n        System.out.println(\"XOR of 2 and 3: \" + (i1 ^ i2));\n    }\n\n}\n<\/pre>\n<p><strong>Output:<\/strong><\/p>\n<div class=\"content-box-green\">\nXOR of 2 and 3: 1\n<\/div>\n<p>Let&#8217;s understand how XOR of 2 and 3 is 1.<br \/>\n<img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/java2blog.com\/wp-content\/uploads\/2020\/03\/XORBItWise.jpg\" alt=\"XORBItWise\" width=\"634\" height=\"291\" class=\"aligncenter size-full wp-image-8940\" srcset=\"https:\/\/java2blog.com\/wp-content\/uploads\/2020\/03\/XORBItWise.jpg 634w, https:\/\/java2blog.com\/wp-content\/uploads\/2020\/03\/XORBItWise-300x138.jpg 300w\" sizes=\"(max-width: 634px) 100vw, 634px\" \/><br \/>\nAs you can see, XOR operator returns output as 1 if either of its input 1 but not both.<\/p>\n<p>That&#8217;s all about XOR operator in java.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this tutorial, we will see about XOR operator in java. XOR operator or exclusive OR takes two boolean operands and returns true if two boolean operands are different. XOR operator can be used when both the boolean conditions can&#8217;t be true simultaneously. Here is truth table for XOR operator. Let&#8217;s say you have Person [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_mi_skip_tracking":false},"categories":[215],"tags":[],"_links":{"self":[{"href":"https:\/\/java2blog.com\/wp-json\/wp\/v2\/posts\/8932"}],"collection":[{"href":"https:\/\/java2blog.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/java2blog.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/java2blog.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/java2blog.com\/wp-json\/wp\/v2\/comments?post=8932"}],"version-history":[{"count":0,"href":"https:\/\/java2blog.com\/wp-json\/wp\/v2\/posts\/8932\/revisions"}],"wp:attachment":[{"href":"https:\/\/java2blog.com\/wp-json\/wp\/v2\/media?parent=8932"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/java2blog.com\/wp-json\/wp\/v2\/categories?post=8932"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/java2blog.com\/wp-json\/wp\/v2\/tags?post=8932"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}