表达式必须具有与对应表达式相同的数据类型_0005.数据类型和运算符003

2.5.逻辑运算符

    &、|、^、&&、||、!
    参与逻辑运算的数据类型必须是boolean类型,
    并且逻辑运算返回的结果也是boolean类型。
* &,与
   结论:只有两边都为true,那么返回的结果才为true。 
         只要两边有一个为false,那么返回的结果就是false。
   辅助记忆:小明与小红来一趟办公室。    
* |,或
   结论:只要两边有一个为true,那么返回的结果就是true。
         只有两边都为false,那么返回的结果才为false。
   辅助记忆:小明或小红来一趟办公室。    
* ^,异或  
   结论:两边相同则返回false,两边不同则返回true。
-----------以上三个作为了解,几乎不用----------  
* &&,短路与
  &和&&相同点:
     返回的结果都是一模一样,结论一模一样。
  &和&&不同点:
     &&:如果左边表达式的结果为false,右边表达式永远不会执行,直接返回左侧表达式的结果。
     &:即便左边表达式的结果为false,右边表达式依旧会执行,并且返回左侧表达式的结果。
     补充:如果左侧表达式的结果为true,那么&和&&的右侧表达式都会执行。
     补充:现实开发中使用短路与(&&)非常多,因为短路与(&&)效率高!
* ||,短路或    
    |和||相同点:    
        返回的结果都是一模一样,结论一模一样。
    |和||不同点:
        ||:如果左边表达式的结果为true,右边表达式永远不会执行,直接返回左侧表达式的结果。
        |:即便左边表达式的结果为true,右边表达式依旧会执行,并且返回左侧表达式的结果。
        补充:如果左侧表达式的结果为false,那么|和||的右侧表达式都会执行。
        补充:现实开发中使用短路或(||)非常多,因为短路或(||)效率高!   
* !,非,取反的意思。属于一元运算符。
    结论:取反的意思。
        !true --> false, !false --> true
*  随堂练习:
        1、判断一个数是否在4(包含)~6(不包含)之间;
            步骤实现:
                a)通过Scanner获取一个整数,假设该整数为num
                b)判断num是否在[4, 6)之间。
                    数学:4 <= num < 6 --> 不同数据类型之间无法做比较
                    编程:4 <= num && 6 > num
        2、判断一个数是否在4(不包含)~6(包含)之外;
            实现步骤:
                a)通过Scanner获取一个整数,假设该整数为num
                b)判断num是否在(4, 6]之外。
                    编程:num < 4 || num >= 6
        补充:[4, 6) --> 该范围表示:4(包含)到6(不包含)之间的整数
              [4.0, 6.0) --> 该范围表示:4(包含)到6(不包含)之间的小数        
              []代表包含关系。()代表不包含关系

2.6位运算(了解)

&、|、^、~、>>,>>>,<<
注意:&、|、^既可以是逻辑运算符,也可以是位运算。
​
&、|、^、~
* &,与
    结论:如果位都为1,那么结果就为1,反之就为0。
       7  0000-0000 0000-0000 0000-0000 0000-0111
       6  0000-0000 0000-0000 0000-0000 0000-0110
       &-------------------------------------------     
          0000-0000 0000-0000 0000-0000 0000-0110  --->6
* |,或
    结论:如果其中一个位为1,那么结果就为1,反之就为0。 
        7  0000-0000 0000-0000 0000-0000 0000-0111
        6  0000-0000 0000-0000 0000-0000 0000-0110
       |-------------------------------------------     
           0000-0000 0000-0000 0000-0000 0000-0111  --->7
* ^异或
   结论:对m连续异或n两次,返回的结果依旧为m。  
         n^m^n --> m      m^n^n --> m
   使用场合:
      a)用于加密。
         加密:把图片和一个数值(m)做异或运算,然后保存在电脑上。
         解密:把加密的图片和数值m继续异或一次,得到就是解密后的图片。
      b)交换两个变量的值
         方式三:使用异或运算实现。
            优点:效率最高。
            缺点:不好理解。
* ~,非
    结论:位取反。1变为0,0变为1.
    7  0000-0000 0000-0000 0000-0000 0000-0111
     ^-------------------------------------------   
       1111-1111 1111-1111 1111-1111 1111-1000  
>>,>>>,<<
* <<,左移
  作用:对m左移n位,等效于:m*2^n
  注意点:左移移动了n位,那么低位就补n个零。
  使用场合:如果想对一个数乘以2,那么最高效的方式就是左移一位。
* >>,右移
  作用:对m右移n位,等效于:m/2^n
  注意点:对正数右移之后,高位永远补0;
          对负数右移之后,高位永远补1。
  使用场合:如果想对一个数除以2,那么最高效的方式就是右移一位。   
* >>>,无符号右移
  注意点:无论是对正数还是负数无符号右移,高位都永远补0

2.7 运算符优先级

b1af7f68f9fc9af80ab9026bd147eb83.png

不需要去刻意的记这些优先级,表达式里面优先使用小括号来组织!!

2.8三元运算符(三目运算符)

语法:条件表达式 ? 表达式1 : 表达式2; 
需求:获取两个数中的最大值。
    代码例子:
    int num1 = 30, num2 = 20;
    // 使用三元运算符
    int max = num1 > num2 ? num1 : num2;
    System.out.println("num1和num2是最大值为:" + max);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值