异或运算符:^
异或运算符的原理如下:
1^0=1 true^false = true
0^0=0 false^false = false
1^1=1 true^ true = false
也就是说异或运算只有异或元素之间不同 结果才为真。
离散数学里有介绍:- 交换律:A ^ B = B ^ A;
- 结合律:A ^ (B ^ C) = (A ^ B) ^ C;
- 恒等律:X ^ 0 = X;
- 归零律:X ^ X = 0;
- 自反:A ^ B ^ B = A ^ 0 = A;
- 对于任意的 X: X ^ (-1) = ~X;
- 如果 A ^ B = C 成立,那么 A ^ C = B,B ^ C = A;
package com.summer01;
public class StringTest01 {
public static void main(String[] args) {
//主方法中对函数进行测试。
String a = new String("abcdefghig");
System.out.println("字符串反转前:"+a);
StringTest01 stringTest01 = new StringTest01();
//调用下面写的字符串反转函数,并打印输出。
System.out.println("字符串反转后:"+stringTest01.reversesre(a));
}
//写的实现字符串实现反转的方法。需要传递一个参数。
public String reversesre(String str) {
//讲字符串转化为char类型数组
char[] chars = str.toCharArray();
// 定义char数组第0个索引值赋值给star
int star = 0;
// 定义char数组最后一个索引值赋值给end
int end = chars.length - 1;
// 当char数组前半部分元素的索引小于后半部分时候,进行元素的交换
while (star < end) {
//使用异或交换元素 底层实际是二进制码之间的异或运算
chars[star] ^= chars[end];
chars[end] ^= chars[star];
chars[star] ^= chars[end];
star++;
end--;
}
return new String(chars);
}
}
运行结果截图如下:



