Java >>运算符查找字符是否唯一

我不确定这段代码是如何工作的:

public static boolean isUniqueChar2(String str) { int checker = 0; for (int i = 0; i < str.length(); ++i) { int val = str.charAt(i) - 'a'; System.out.println(str.charAt(i) ); System.out.println(val); if ((checker & (1 < 0) return false; checker |= (1 << val); } return true; } 

特别是我不了解特定的>>运算符和检查器的作用

看起来这种方法只适用于小写字母。 checker变量是一个32位位图,初始化为全0 。 代码1 << val取1并将其移动到val的位置, val代表字母表的字母(a = 0,b = 1,c = 2等)。 if ((checker & (1 << val)) > 0)返回false因为0以外的任何值都表示重复了一个字母。 循环中的最后一行, checker |= (1 << val); 在下一次迭代之前将位置于val位置。

和| 是按位移位和二进制或。 我建议你做二进制和按位运算符的阅读: http : //en.wikipedia.org/wiki/Bitwise_operation

a | = b只是a = a |的简写 b类似于a + = b到a = a + b