Java学习-Java中的运算符(2)

本文详细介绍了Java中的逻辑运算符如&&,||,!以及位运算符如&,|,^,~等的基本用法和特性,包括它们在布尔表达式中的行为,以及位移运算符(<<,>>,>>>)的应用实例。同时提及了条件运算符(三元运算符)的使用场景和面试题中涉及的高效计算方法。
摘要由CSDN通过智能技术生成
逻辑运算符

  &,|, &&,||,!,^

逻辑运算符:进行逻辑运算的,运算符左右连接的都是 布尔类型的操作数,最终表达式的结果是布尔值:要么是true,要么false

代码:

  1. public class TestOpe09{
  2.         public static void main(String[] args){
  3.                 // 逻辑与 :& 规律:只要有一个操作数是false,那么结果一定是false
  4.                 System.out.println(true&true);
  5.                 System.out.println(true&false);
  6.                 System.out.println(false&false);
  7.                 System.out.println(false&true);
  8.                 
  9.                 // 短路与:&& 规律:效率高一些,只要第一个表达式是false,那么第二个表达式就不用计算了,结果一定是false
  10.                 System.out.println(true&&true);
  11.                 System.out.println(true&&false);
  12.                 System.out.println(false&&false);
  13.                 System.out.println(false&&true);
  14.                
  15.                 // 逻辑或:| 规律:只要有一个操作数是true,那么结果一定是true
  16.                 System.out.println(true|true);
  17.                 System.out.println(true|false);
  18.                 System.out.println(false|false);
  19.                 System.out.println(false|true);
  20.                
  21.                 // 短路或:|| 规律:效率高一些,只要第一个表达式是true,那么第二个表达式就不用计算了,结果一定是true
  22.                 System.out.println(true||true);
  23.                 System.out.println(true||false);
  24.                 System.out.println(false||false);
  25.                 System.out.println(false||true);
  26.                
  27.                 //逻辑非:   !  规律:相反结果
  28.                 System.out.println(!true);//false
  29.                 System.out.println(!false);//true
  30.                
  31.                 //逻辑异或: ^  规律:两个操作数相同,结果为false,不相同,结果为true
  32.                 System.out.println(true^true);
  33.                 System.out.println(true^false);
  34.                 System.out.println(false^false);
  35.                 System.out.println(false^true);
  36.         }
  37. }

再做一个加深的练习:看代码 说结果:

  1. public class TestOpe10{
  2.         public static void main(String[] args){
  3.                 int i=8;
  4.                 System.out.println((5>7)&&(i++==2)); //false
  5.                 System.out.println(i);  //8
  6.                 
  7.                 
  8.                 int a=8;
  9.                 System.out.println((5>7)&(a++==2)); //false
  10.                 System.out.println(a); //9
  11.                
  12.                
  13.                 int m=8;
  14.                 System.out.println((5<7)&&(m++==2)); //false
  15.                 System.out.println(m); //9
  16.                
  17.                 int b=2;
  18.                 System.out.println((5<7)&(b++==2)); //true
  19.                 System.out.println(b);  //3
  20.                
  21.                 int c=2;
  22.                 System.out.println((5<7)&(++c==2)); //false
  23.                 System.out.println(c);  //3
  24.         }
  25. }

条件运算符

【1】条件运算符:又称:  三元运算符/三目运算符

【2】格式:

  a?b:c

其中a是一个布尔类型的表达式,返回结果要么是true要么false,通过a的结果决定最终表达式的结果:

如果a的结果是true,那么表达式最终结果为b

如果a的结果是false,那么表达式最终结果为c

代码:

  1. public class TestOpe11{
  2.         public static void main(String[] args){
  3.                 int num = (5>7)?6:9 ;
  4.                 System.out.println(num);
  5.                 
  6.                 String str = (4==4)?"你好":"你不好" ;
  7.                 System.out.println(str);
  8.                 
  9.                 System.out.println((4==4)?"你好":"你不好");
  10.         }
  11. }

练习:

  1. import java.util.*;//*代表所有
  2. public class TestOpe12{
  3.         public static void main(String[] args){
  4.                 //实现功能:男孩女孩选择晚饭吃什么,如果意见一致,听男生的,如果意见不一致,听女生的
  5.                 
  6.                 //1.要让男孩女孩选择晚饭吃什么:
  7.                 Scanner sc = new Scanner(System.in);
  8.                 System.out.println("请选择今晚吃什么:1.火锅 2.烧烤 3.麻辣烫 4.西餐");
  9.                 System.out.println("请男孩选择:");
  10.                 int boyChoice = sc.nextInt();
  11.                 System.out.println("请女孩选择:");
  12.                 int girlChoice = sc.nextInt();
  13.                 //2.判断:
  14.                 System.out.println(boyChoice==girlChoice?"听男孩的":"听女孩的");
  15.         }
  16. }

PS:三目运算符可以代替后续我们要学习的if-else

位运算符(了解)

位运算符:&,|,^,~ , >>,<<,>>>

如何区分逻辑运算符和位运算符:

逻辑运算符:左右连接的是布尔类型的操作数

位运算符:左右连接的是具体的数值

【1】<<   左移 

  3<<2 = 12

面试题: 4乘以8最快的方式:  4<<3 

【2】>> 有符号右移

6>>2 = 1

-6>>2 = -2

【3】>>> 无符号右移:

6>>>2  = 1

【4】 & 与

6&3 = 2

【5】| 或

6|3=7

【6】^异或:

6^3 = 5

【7】~反:

~6  = -7

PS:

byte类型的表数范围的 -128是怎么算出来的 

127: 01111111

-128:  10000000

一看就是个负数

减1:    01111111

取反:   10000000  ---》2^7  = 128

加负号:  -128

运算符总结

运算符的优先级别

  • 19
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值