JavaSE学习day3_01, 逻辑运算符号

本文介绍了Java中的逻辑运算符,包括逻辑与(&、&&)、逻辑或(|、||)、异或(^)和非(!),并探讨了短路逻辑运算符的特点。通过代码示例展示了这些运算符的使用方法,并提供了练习题以加深理解。此外,还讲解了三元运算符的使用和优先级规则。

第一章 运算符

1.1 逻辑运算符

1.1.1 而且和或者

分类:

1, & 逻辑与,建议读作并且、而且。

表示需要同时满足左边和右边才可以。

2, | 逻辑或,建议读作或者。

表示两边的条件只要满足其中一个就可以了。

注意:在C语言中与或非分别用符号&&, ||, !表示,而&,|分别表示按位与,按位或的意思.学过C语言的同学都知道按位与,按位或是怎么运算的.只是在Java语言中,&,|表示且, 或的意思.那么在Java语言中,&&,||分别是什么意思?下面马上就会学习.

注意在C语言里的这个符号: ~  它是按位取反的意思。  是按位异或运算得意思

代码示例:

//& 而且
//规则:两边都为真,结果才是真。只要有一个为假,结果就是假
System.out.println(true & true);//true
System.out.println(false & true);//false
System.out.println(true & false);//false
System.out.println(false & false);//false
​
// |  或者
//规则:两边都为假,结果才是假,只要有一个为真,结果就是真
System.out.println(true | true);//true
System.out.println(false | true);//true
System.out.println(true | false);//true
System.out.println(false | false);//false

应用场景一:

用户在登录的时候,需要用户名和密码这两个同时输入正确了,那么才是可以的。

此时就是两个条件同时满足,用并且

应用场景二:

丈母娘跟女婿提要求:需要有房子,或者有车子就可以穿走我的小棉袄。

此时就是两个条件中只要满足其中一个即可,用或者

1.1.2 异或

这个知识点不重要,后面几乎用不到,所以我们只要了解.学过数字逻辑的同学就知道,异或运算.

运算规则:

相同为false,不同为true

代码示例:

System.out.println(true ^ true);//false
System.out.println(false ^ true);//true
System.out.println(true ^ false);//true
System.out.println(false ^ false);//false

注意C语言中异或运算符号也是 ^.

有必要提醒的是异或运算是把数据转为二进制的运算.在计算机中,数据以补码的形式存在.异或运算有一个小总结点就是,奇数个1相异或是1,偶数个1相异或是0.

1.1.3 非/取反

运算规则:

改变true和false的结果。

如果是true,取反之后变成false

如果是false,取反之后变成true

代码示例:

System.out.println(true);//true
System.out.println(!true);//false
System.out.println(!false);//true

结果如下;

由于!可以连续出现,但是建议:最多只能用一次。用多了没有任何意义。

代码示例:

System.out.println(!!true);

结果如下:

由上面的结果可知,每出现一次!, 运算的结果就取一次反.

用C语言运行如下:

1.2 短路逻辑运算符

分类:

&& 短路且、短路与

|| 短路或

和C语言的与或一样.都是与,或的意思.而且用法一样.都有短路的功能.可能有人不理解短路是什么意思.下面我会通过代码来讲解.可能还有人会问Java语言里表示的逻辑有&&和&,表示的逻辑有||.有什么区别呢?区别就是&和|没有短路功能.其实在以后的开发中用&&和||比较多.所谓的短路可以提高效率.

特点:

只要左边能确定表达式最终的结果,那么右边不会参与计算。

&&:

左边为true,那么右边会参与计算。

左边为false,那么右边不会参与计算。

||:

左边为true,那么右边不会参与计算。

左边为false,那么右边会参与计算。

常用的逻辑运算符:

&& || !

看几个例子:

发现结果是10,运行结果是if里面的逻辑值是假的,跳转到else逻辑块里,说明b的值没有被改变,因此&&有短路功能。再看&:

结果说明&没有短路说明,即使已经知道逻辑结果是假了,但是依旧要执行后面那个表达式。

再看一个:

看到结果说明||有短路功能。

结果是11,即使我们知道整体逻辑结果是真,但是|运算符依旧要计算后面那个表达式。

这就是短路的区别.我们知道与的关系只要有一个为假整体结果为假,比如

表达式a&&表达式b,只要表达式a为假,不管表达式b为多少,整体结果为假.因此短路的意思是当表达式a为假时,不用判断表达式b了.相反,表达式a&表达式b,当表达式a为假时,尽管已经知道整体结果为假了,但是还是要判断表达式b,这就是二者的区别.同理||和|道理是一样的。

练习:

需求:

数字6是一个真正伟大的数字,键盘录入两个整数。

如果其中一个为 6,最终结果输出true。

如果它们的和为 6的倍数。

最终结果输出true。

其他情况都是false。

代码示例:

//1.键盘录入两个整数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
int a = sc.nextInt();
System.out.println("请输入第二个整数");
int b = sc.nextInt();
//2.a==6 || b==6 || (a + b) % 6 == 0
//三个条件选一个
boolean result = (a == 6) || (b == 6) || ((a + b) % 6 == 0);
System.out.println(result);

结果;

其他情况自己可以去试。重点是要理解代码逻辑。

1.3 三元运算符

三元运算符又叫三元表达式,还有其他名字:问号冒号表达式,三目运算符。

格式:

关系表达式 ? 表达式1 : 表达式2 ;

注意点:

三元运算符的结果一定要被使用,可以赋值给一个变量,或者直接打印输出。

执行流程:

先执行关系表达式。

如果结果为真,执行表达式1,此时表达式1的结果就是整个三元运算符的结果。

如果结果为假,执行表达式2,此时表达式2的结果就是整个三元运算符的结果。

代码示例:

int a = 10;
int b = 20;
//利用三元表达式求a和b之间的较大值
int max = a > b ? a : b ;
System.out.println(max);
System.out.println(a > b ? a : b);

执行结果如下:

1.4 练习 - 两只老虎

需求:

动物园里有两只老虎,体重分别为通过键盘录入获得,请用程序实现判断两只老虎的体重是否相同。

代码示例:

//分析:
//1,键盘录入
Scanner sc = new Scanner(System.in);
System.out.println("请录入第一只老虎的体重");
int weight1 = sc.nextInt();
System.out.println("请录入第二只老虎的体重");
int weight2 = sc.nextInt();
//2.比较
// String result = 体重1 == 体重2 ? "相同"  : "不相同";
String result = weight1 == weight2 ? "相同" : "不相同";
System.out.println(result);

执行结果如下:

1.5 练习-求三个值的较大值

需求:

一座寺庙里住着三个和尚,已知他们的身高分别为150cm、210cm、165cm,请用程序实现获取这三个和尚的最高身高。

代码示例:

//1.定义三个变量记录和尚的身高
int height1 = 150;
int height2 = 165;
int height3 = 210;
//2.求出任意两个数字的较大值
int temp = height1 > height2 ? height1 : height2;
//3.再拿着这个较大值跟第三个数进行比较,求出三个数字的最大值
int max = temp > height3 ? temp : height3;
System.out.println(max);

执行结果如下:

1.6 运算符的优先级

从小学开始我们就知道四则运算先算乘除,再算加减.如果要先算加减就得加上小括号.

小括号优先于所有。

想要让谁先运行,就把谁给括起来就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值