JavaSE初阶(2)---------运算符

本文详细介绍了Java编程中的基本运算符,包括算数运算符、增量运算符、关系运算符、逻辑运算符(包括逻辑与&&、逻辑或||、逻辑非!)、位操作符(按位与&、按位或|、按位异或^)以及移位操作符。还讨论了短路求值和条件运算符的使用情况。
摘要由CSDN通过智能技术生成

一.算数运算符(+ - * / %)

public class java27 {
    public static void main(String[] args) {
        //System.out.println(1/0);//error 报错
        System.out.println(7%3);//1
        System.out.println(7%-3);//1
        System.out.println(-7%3);//-1
        System.out.println(-7%-3);//-1
        //也可以打印余数e
        System.out.println(11.5/5);//2.3dd
    }
}

二.增量运算符(+= -= *= %=)

public class java27 {
    public static void main(String[] args) {
        int a = 1;
        a += 2;
        System.out.println(a);//3

        int i = 3;
        long j = 10L;
        i += j;
        System.out.println(i);//13
        //会报错吗? 没有
        //为什么不是在之前说过大的范围不能给小的范围?所以可能发生截断或者整型提升。
        //验证
        byte aa = 1;
        byte bb = 127;
        aa += bb;
        System.out.println(aa);//结果-128  所以发生了截断,如果为128说明整型提升了
    }
}

三.关系运算符(结果只有true false)

public class java27 {
  public static void main(String[] args) {
   int a = 10;
   int b = 20;
    // 注意:在Java中 = 表示赋值,要与数学中的含义区分
   // 在Java中 == 表示相等
   System.out.println(a == b); // false
   System.out.println(a != b); // true
   System.out.println(a < b); // true
   System.out.println(a > b); // false
   System.out.println(a <= b); // true
   System.out.println(a >= b); // false
  }
}

四.逻辑运算符(&&  ||  !)

     (运算结果都是boolean类型)(双目操作符)

     (1)逻辑与&&

               表达式1&&表达式2(两个表达式必须是布尔表达式)(结果只有true false)。

               如果表达式一个为假,则另一个不需要执行。

               只有两个都为true,才为真。

      (2)逻辑或 ||

                表达式1&&表达式2(两个表达式必须是布尔表达式)(结果只有true false)。

                 只要有一个为真即为真。

                 一边为真,就不会执行第二个表达式即使第二个表达式为假。

       (3)逻辑非 !

                    取非,非一定是个表达式  , 真变假,假变真。

                     a=4;

                     !(a>5)为true

        (4)短路求值(&& 和 || 遵守短路求值的规则)

public class java27 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        //短路求值
        //任何数/0都是会错误
        System.out.println(a>b&&a/0==0);//false
        System.out.println(a<b||a/0==0);//true
        //不支持短路求值
        System.out.println(a>b&a/0==0);//error
        System.out.println(a<b|a/0==0);//error
    }
}

五.位操作符(& | …^)

      (1)按位与 &

          只要有0结果为0,俩个同时为1才为1

          00000101

         10100010

         00000000

         用途:找一个数二进制位上有多少个1  

      (2)按位或 |

        只要有一位是1就是

        00000101

       10100010

       10100111

        用途:找一个数二进制位上有多少个0

       (3)按位异或 ^

        就是找不同,不同才为1。

六.移位操作符

(1)左移  <<(向左侧移动,左侧移动的不要了,右侧补0)


public class java27 {
  public static void main(String[] args) {
        int a=0x10;              //00001010   10
        System.out.println(a<<1);//00010100   20
        int b = a;
        System.out.println(b<<1);//00101000   40
        //每次左移1次2^1,2次2^2   n次2^n
        
  }
}

    (2)右移 >>(向右侧移动,右侧移动的不要了,左侧的补符号位 正0 负1)

        无符号右移>>>(最右侧位不要了, 最左侧补 0)

public class java27 {
 public static void main(String[] args) {
       //右移正数
       int a=0x20;                //00010100   20
       System.out.println(a>>1);  //00001010   10
       System.out.println(a>>2);  //00000101    5
       //正数右移n位  n次 2^(-n)
       //右移负数
       int b=-0x1;//因为是负数
       //原码  10000001
       //反码  11111110
       //补码  11111111  补符号位
       //>>1   1 1111111    1  还是原来的样子不遵循正数右移
       //有一种右移 不是补符号位 补0
       //01111111 叫做 >>>无符号右移指每次右移一位不管是正负都是补0,所以-1在向右移了之后变成非常大的正数
       byte c=-1;
       System.out.println( c>>> 1);//转刻变成一个很大的数2147483647
       //为什么会这么大
       //因为byte会整型提升Int
   }
}

 七.条件运算符(java中唯一的一个三目运算符)

     表达式1?表达式2:表达式3(表达式1必须是布尔表达式也就是要么true要么false,为真则执       行表达式2,否则执行表达式3)

     表达式不能单独存在,必须赋值给某一个变量,或者直接打印。

public class java27 { 
   public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int max = a>b?a:b;
        System.out.println(max);
        boolean lean = true == true ? true : true == false ? true : false;
        //找三个表达式呀   表达式1      表达式2  表达式3
        //所以结果为true
        System.out.println(lean);
        boolean lag = true == false ? true : true == false ? true : false;
        //             表达式1  false  表达式2  走表达式3((表达式1) 表达式2  走表达式3)
        //所以结果为flase
        System.out.println(lag);
    }
}
文章最后,如有知识点错误恳请小伙伴们指出,希望大家可以动动发财的小手手帮阿莹一键三连,阿莹万分感激!

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值