5.9 在Java中创建“逻辑异或”运算符| Java Debug 笔记

121 阅读1分钟

本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看<活动链接>

提问:在Java中创建“逻辑异或”运算符

1,Java具有逻辑AND运算符。

2, Java具有逻辑OR运算符。

3, Java具有逻辑NOT运算符。

Java没有逻辑XOR运算符。我想定义一个。

作为一种异或运算方法,其简单定义如下:

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

观察结果: Java具有逻辑AND运算符。 Java具有逻辑OR运算符。 Java具有逻辑NOT运算符。

问题: 据sun称,Java没有逻辑XOR运算符。我想定义一个。

方法定义: 作为一种方法,其简单定义如下:

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

并通过以下方式调用此方法:

boolean myVal = logicalXOR(x, y);

或者是使用运算符,比如

boolean myVal = x ^^ y;

关于如何在Java中定义新运算符,我找不到任何相关资料。我应该从哪里开始?

回答1:

Java确实有一个逻辑XOR运算符,它是^(如a ^ b)。

这是一个示例:


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);
        }
    }
}
假^假=假
假^真=真
正确^错误=正确
正确^正确=否

回答2:

也许您误解了&和&&, | 和||之间的区别,

操作符&&和||的目的 是第一个操作数的值如果可以确定结果,就不需要评估第二个操作数。

(比如说a && b)如果a是0则结果是0

如果第二个操作数将导致错误,则此功能特别有用。 例如

if (set == null || set.isEmpty())
// or
if (list != null && list.size() > 0)