java如何取反
取反操作的基本概念
在Java中,取反操作分为两种:按位取反和逻辑取反。按位取反是对二进制数的每一位进行反转,而逻辑取反是对布尔值进行反转。
按位取反(~)
按位取反使用~运算符,它对操作数的每一位二进制数进行反转(0变1,1变0)。
int a = 5; // 二进制表示为 0000 0101
int result = ~a; // 取反后为 1111 1010(补码形式,十进制为 -6)
System.out.println(result); // 输出 -6
注意事项
- 按位取反适用于整数类型(
int、long、short、byte)。 - 取反后的结果是补码形式,需注意符号位的处理。
逻辑取反(!)
逻辑取反使用!运算符,它对布尔值进行反转(true变false,false变true)。
boolean flag = true;
boolean negatedFlag = !flag; // 取反后为 false
System.out.println(negatedFlag); // 输出 false
适用场景

- 用于条件判断或布尔表达式的逻辑反转。
其他取反方式
- 数值取反(负号):通过负号
-对数值进行取反。int num = 10; int negatedNum = -num; // 结果为 -10 - 集合取反(如补集):需结合集合操作实现,如使用
removeAll或流式处理。
常见问题
- 按位取反与逻辑取反的区别:按位取反操作的是二进制位,逻辑取反操作的是布尔值。
- 补码的影响:按位取反后的结果需考虑补码表示,可能为负数。
示例代码
public class NegationExample {
public static void main(String[] args) {
// 按位取反
int x = 0b0000_0101; // 5
System.out.println(~x); // -6
// 逻辑取反
boolean b = true;
System.out.println(!b); // false
// 数值取反
int y = 20;
System.out.println(-y); // -20
}
}
通过以上方法,可以灵活实现Java中的取反操作。






