我有下面这段Java代码,在Eclipse,Windows7中调试时,变量'xoredChar‘根本没有显示任何值,不是null,不是'',什么都不显示。
char xoredChar = (char) (stringA.charAt(j)^stringB.charAt(j));为什么会这样呢?我需要了解如何在java中对两个字符进行xor运算。我遗漏了什么?
发布于 2014-03-26 21:35:30
如果字符串相等,你会得到一个\0,它不是一个可打印的字符。试试这样的东西,
String stringA = "A";
String stringB = "A";
int j = 0;
char xoredChar = (char) (stringA.charAt(j) ^ stringB.charAt(j));
System.out.printf("'%c' = %d\n", xoredChar, (int) xoredChar);输出为
' ' = 0发布于 2014-03-26 21:33:36
如果stringA和stringB相同,则异或操作将产生xoredChar = 0。
0可能在IDE中显示为nothing,因为在大多数情况下,0被用作字符串终止符。
发布于 2014-03-26 21:47:36
正如其他答案所提到的,对相同的字符进行has运算会产生一个没有可视表示形式的\0值。也许您对一个小应用程序感兴趣,它让您了解XOR在字符串上的工作原理:
public class Example {
public static void main(String[] args) {
String a = "abcde";
String b = a;
for (int idx = 0; idx < b.length(); idx++) {
System.out.printf("xoring <%s> [%s] with <%s> [%s]\n",
a.charAt(0), toBinaryString(a.charAt(0)),
b.charAt(idx), toBinaryString(b.charAt(idx)));
int c = (a.charAt(0) ^ b.charAt(idx));
System.out.printf("result is <%s> [%s]\n",
(char) c, toBinaryString(c));
}
}
}玩得开心!
https://stackoverflow.com/questions/22662559
复制相似问题