Search code examples
javaoperatorsxor

Creating a "logical exclusive or" operator in Java


Observations:

Java has a logical AND operator.
Java has a logical OR operator.
Java has a logical NOT operator.

Problem:

Java has no logical XOR operator, according to sun. I would like to define one.

Method Definition:

As a method it is simply defined as follows:

public static boolean logicalXOR(boolean x, boolean y) {
    return ( ( x || y ) && ! ( x && y ) );
}


Method Call:

This method is called in the following way:

boolean myVal = logicalXOR(x, y);


Operator Usage:

I would much rather have an operator, used as follows:

boolean myVal = x ^^ y;


Question:

I can't find anything on how to go about defining a new operator in Java. Where should I start?


Solution

  • Java does have a logical XOR operator, it is ^ (as in a ^ b).

    Apart from that, you can't define new operators in Java.

    Edit: Here's an example:

    public static void main(String[] args) {
        boolean[] all = { false, true };
        for (boolean a : all) {
            for (boolean b: all) {
                boolean c = a ^ b;
                System.out.println(a + " ^ " + b + " = " + c);
            }
        }
    }
    

    Output:

    false ^ false = false
    false ^ true = true
    true ^ false = true
    true ^ true = false