网站首页 > 精选教程 正文
逻辑运算符
符号 | 说明 | 描述 |
&& | 逻辑与 | 当且仅当两个操作数都为真,值才为真 |
|| | 逻辑或 | 当且仅当两个操作数都为假,值才为假 |
! | 逻辑非 | 取反,如果条件为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-11-04 都这年头了不会还有人不知道「java」运算符吧?
- 2024-11-04 java基础-运算符例子 java中运算符
- 2024-11-04 第四讲《JAVA基础之运算符》,小妙招教你速记、速填坑
- 2024-11-04 Java教程之运算符 java | 运算符
- 2024-11-04 《Java编程思想》第五版:第四章 运算符
- 2024-11-04 道哥说编程----Java运算符中的算数运算符
- 2024-11-04 一起学JAVA 初识JAVA运算符 java ^运算符
- 2024-11-04 Java理论学习三分钟-运算符(上) java运算符总结
- 2024-11-04 Java位运算符:Java移位运算符、复合位赋值运算符及位逻辑运算符
- 2024-11-04 Java运算符之算术运算符和举例说明
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)