本文正在参加「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)