本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/44724267
本文主要介绍Java中常见的运算符,重点介绍了逻辑运算符和位运算符。希望对你有所帮助。
/**
*
* @author liqq
*/
@Test
public void testLogic() {
// && 逻辑与 (短路) 对于a&&b 当a为false时,不需要判断b是否为false
System.err.println(false && true); // false
System.err.println(false && false); // false
System.err.println(true && true); // true
System.err.println();
// || 逻辑或(短路) 对于a||b 当b为true时,不需要判断b是否为true
System.err.println(false || true); // true
System.err.println(true || true); // true
System.err.println(false || false); // false
System.err.println();
// !逻辑非
System.err.println(!true); // false
System.err.println(!false); // true
System.err.println();
// ^ 逻辑异或 (相同为false,不同为true)
System.err.println(false ^ true); // true
System.err.println(true ^ true); // false
System.err.println(false ^ false); // false
System.err.println();
// & 逻辑与(不短路) 对于a&b 当b为false时,仍需要判断b是否为false
System.err.println(false & true); // false
System.err.println(true & true); // true
System.err.println(false & false); // false
System.err.println();
// | 逻辑或(不短路) 对于a|b 当a为true时,仍然需要判断b是否为true
System.err.println(false | true); // true
System.err.println(true & true); // true
System.err.println(false & false); // false
System.err.println();
} /**
* @author liqq
*/
@Test
public void testBit() {
// 位与(&) 和逻辑与类似
System.err.println(1 & 0); // 0
System.err.println(1 & 1);// 1
System.err.println(0 & 0);// 0
System.err.println();
// 位或(|)和逻辑或类似
System.err.println(1 | 0);// 1
System.err.println(1 | 1);// 1
System.err.println(0 | 0);// 0
System.err.println();
// 位非(~)
System.err.println(~0); // -1
System.err.println(~1);// -2
System.err.println();
// 位异或(^) 相同为0,不同为1
System.err.println(1 ^ 0);// 1
System.err.println(1 ^ 1);// 0
System.err.println(0 ^ 1);// 1
System.err.println();
// 右移(>>)右移数值变小,每移动一位数值减半
System.err.println(2 >> 1);// 1
System.err.println(2 >> 2);// 0
System.err.println(8 >> 1);// 4
System.err.println(8 >> 2);// 2
System.err.println();
// 左移(<<)左移数值变大,每移一位数值增倍
System.err.println(2 << 1);// 4
System.err.println(2 << 2);// 8
System.err.println(8 << 1);// 16
System.err.println(8 << 2);// 32
System.err.println();
// 0填充的右移(>>>)无符号,右边空出的位以0填充
System.err.println(8>>>2);//2
System.err.println(-14 >>> 2); //1073741820
/*(即二进制的 11111111 11111111 11111111 11110010),
向右移两位后等于 1073741820 (即二进制的 00111111 11111111 11111111 11111100)*/
System.err.println();
}原文地址:http://blog.csdn.net/pistolove/article/details/44724267