网站首页 > java教程 正文
逻辑运算符
符号 | 说明 | 描述 |
&& | 逻辑与 | 当且仅当两个操作数都为真,值才为真 |
|| | 逻辑或 | 当且仅当两个操作数都为假,值才为假 |
! | 逻辑非 | 取反,如果条件为true,则逻辑非运算符将得到false。 |
示例:
/**
* LogicalOperatorsExample
* @author chewing
*/
public class LogicalOperatorsExample {
public static void main(String[] args) {
// 定义两个布尔变量
boolean isRaining = true;
boolean haveUmbrella = false;
// 逻辑与(&&)
boolean canGoOutside = isRaining && haveUmbrella;
System.out.println("Can go outside without getting wet? " + canGoOutside); // 输出:false,因为没有雨伞
// 短路逻辑与
boolean willNotGetWet = !isRaining || haveUmbrella;
System.out.println("Will not get wet going outside? " + willNotGetWet); // 输出:true,因为虽然没有雨伞,但是天没下雨
// 逻辑或(||)
boolean canStayDry = haveUmbrella || !isRaining;
System.out.println("Can stay dry somehow? " + canStayDry); // 输出:true,因为或者有雨伞,或者天没下雨
// 逻辑非(!)
boolean isNotSunny = !isRaining;
System.out.println("Is it not raining? " + isNotSunny); // 输出:false,因为正在下雨
// 逻辑与和逻辑或结合
int age = 25;
boolean hasIDCard = true;
boolean isWithParent = false;
boolean canAttendParty = (age >= 18 && hasIDCard) || isWithParent; // 假设存在age, hasIDCard, isWithParent变量代表年龄是否大于等于18岁、是否有身份证以及是否由家长陪同
System.out.println("Can attend the party? " + canAttendParty);
}
}
结果:
Can go outside without getting wet? false
Will not get wet going outside? false
Can stay dry somehow? false
Is it not raining? false
Can attend the party? True
位运算符
位运算符是直接对整数类型(byte, short, int, long, char)的二进制位进行操作
符号 | 说明 | 描述 |
& | 按位与 | 对于每一对位,只有当两个操作数中相应的位都为1时,结果位才为1,否则为0。 |
| | 按位或 | 对于每一对位,如果两个操作数中相应的位有一个为1,那么结果位就为1,否则为0。 |
^ | 按位异或 | 对于每一对位,如果两个操作数中相应的位不同,那么结果位就为1,否则为0。 |
~ | 按位非 | 一元运算符,翻转操作数的每一位 |
<< | 左移 | 将操作数的所有位向左移动指定的位数,右侧用0填充。 |
>> | 带符号右移 | 将操作数的所有位向右移动指定的位数,左侧用符号位填充(正数填充0,负数填充1)。 |
>>> | 无符号右移 | 将操作数的所有位向右移动指定的位数,左侧总是用0填充,无论符号位是什么。 |
示例:
/**
* 位运算符案例
* @author chewing
* @time 2023-09-06
*/
public class BitwiseOperatorsExample {
public static void main(String[] args) {
// 定义两个整数
int target = 10; // 十进制:10,二进制:1010
int factorial = 5; // 十进制:5, 二进制:0101
// 按位与 (&)
int bitwiseAndResult = target & factorial;
System.out.println("Bitwise AND of " + target + " and " + factorial + " is: " + bitwiseAndResult); // 输出:0,因为1010 & 0101 = 0000
// 按位或 (|)
int bitwiseOrResult = target | factorial;
System.out.println("Bitwise OR of " + target + " and " + factorial + " is: " + bitwiseOrResult); // 输出:15,因为1010 | 0101 = 1111
// 按位异或 (^)
int bitwiseXorResult = target ^ factorial;
System.out.println("Bitwise XOR of " + target + " and " + factorial + " is: " + bitwiseXorResult); // 输出:15,因为1010 ^ 0101 = 1111
// 左移运算符 (<<)
int leftShiftResult = target << 1;
System.out.println(target + " shifted left by 1 bit is: " + leftShiftResult); // 输出:20,因为1010 << 1 = 10100
// 右移运算符 (>>)
int rightShiftResult = target >> 1;
System.out.println(target + " shifted right by 1 bit is: " + rightShiftResult); // 输出:5,因为1010 >> 1 = 010
// 无符号右移运算符 (>>>)
int unsignedRightShiftResult = -10 >>> 1; // 对负数使用无符号右移
System.out.println("-10 shifted right (unsigned) by 1 bit is: " + unsignedRightShiftResult); // 输出:2147483643,因为11111111111111111111111111110110 >>> 1
// 按位取反 (~)
int bitwiseNotResult = ~target;
System.out.println("Bitwise NOT of " + target + " is: " + bitwiseNotResult); // 输出:-11,因为~1010 = 11111111111111101111
// 注意:Java中int类型的按位取反结果需要与int的最大值进行加1运算才能得到十进制表示的实际负数结果
}
}
结果:
Bitwise AND of 10 and 5 is: 0
Bitwise OR of 10 and 5 is: 15
Bitwise XOR of 10 and 5 is: 15
10 shifted left by 1 bit is: 20
10 shifted right by 1 bit is: 5
-10 shifted right (unsigned) by 1 bit is: 2147483643
Bitwise NOT of 10 is: -11
猜你喜欢
- 2024-10-18 Java 中的移位运算符(Shift Operator)
- 2024-10-18 「每日分享」把Map中的hash()分析的最透彻的文章
- 2024-10-18 从bitmap到布隆过滤器,再到高并发缓存设计策略
- 2024-10-18 Java基础入门(运算符)(java运算符的含义)
- 2024-10-18 Day03-Java运算(三年级混合运算练习题)
- 2024-10-18 浅谈java中的数学运算(java的数学公式有哪些)
- 2024-10-18 好程序员Java学习路线分享Java中的位移运算
- 2024-10-18 全网分析Map中hash方法最透彻的一篇文章
- 2024-10-18 为什么Java String哈希乘数为31?(java中string是什么数据类型)
- 2024-10-18 Java精确运算高位数数字(java计算精度问题)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)