大写字母范围在65-90,它们的32这个位(也就是从右向左数,第5位)是0。而ch&32就是判断这一位数字是否为0,如果为0,显然字符是大写字符。而大写字符转为小写字符就是加32,因此ch | 32就是对字符加32。反之是小写字符,转为大写字符需要减去32,用位与操作就是将32的反码与ch进行位与即可
这是三元运算符的使用,其相当于:
if (ch&32 == 0) {
ch = (char)(ch|32);
} else {
ch = (char)(ch&(Integer.MAX_VALUE-32));
}
建议使用ascll码