java运算符(优先级)

5.运算符(优先级)
  • **一元运算符 》 ±*/ 》位运算 》关系运算符 》逻辑运算符 》?: (最好使用() 自定义优先级) **

  • 算数运算符:+,-,*,/,%,++,–

    • **% : 取模运算,运算结果正负取决于被取模数(%左边的数)的符号 **

    • 操作数里有double结果自动转为double,

    • 操作数里有float无double结果自动转为float,

    • 操作数里有long无float、double结果自动转为long,

    • 操作数里有无long、float、double,操作数类型不同(char、byte、short)运算结果自动转为int(不管有无int类型)

    • public class Demo01 {
          public static void main(String[] args) {
      
              byte b = 100;
              short s = 40;
              int i = 20;
              char ch = 'a';//对应数值97
      //==================================value1类型,value2类型  结果 结果类型
      		System.out.println(b + b);//byte,byte   200 int
              System.out.println(b + s);//byte,short  140 int
              System.out.println(ch + ch);//char,char  194 int
              System.out.println(ch + s);//char,short  137 int
              System.out.println(ch + b);//char,byte  197 int
              System.out.println(b * i);//byte,int  2000 int
      
              int i2 = 40;
              long l = 100;
              float f = 33f;
              double d = 33;
      //==================================value1类型,value2类型  结果 结果类型
              System.out.println(i / i2);//int,int  0 int
              System.out.println(i / (double)i2);//int,double  0.5 double 运算结果为小数时注意数据类型范围
              System.out.println(i * l);//int,long 2000 long
              System.out.println(l / f);//long,float  3.030303 float
              System.out.println(l / d);//long,double  3.0303030303030303 double
              System.out.println(f / d);//float,double  1.0 double
          }
      }
      
  • 赋值运算符:=

    • a = 10;//把10赋值给a
      
  • 关系运算符:>,<,>=,<=,==,!=,instanceof(结果为布尔值

  • 逻辑运算符:

    • &&(短路与,两个真才为真 左边false右边不进行运算),

    • ||(短路或,有一个为真则为真 左边ture右边不进行运算),

    • (非)

    • &(与,两个真才为真 无论左边true或false右边都进行运算),

    • |(或,有一个为真则为真 无论左边true或false右边都进行运算),

    • ^(异或 左右不同为true),

      public class Demo03 {
          public static void main(String[] args) {
              int a = 1;
              int b = 1;
      
      //        && 左边false右边不进行运算
              System.out.println("++++++++++++++++++++++++++++++++++a1");
              System.out.println((a>3)&&(a>a++));
              System.out.println(a);//1 左边false右边不进行运算
              System.out.println("++++++++++++++++++++++++++++++++++a2");
              System.out.println((a<3)&&(a>a++));
              System.out.println(a);//2 左边true右边进行运算
      
      //        & 无论左边true或false右边都进行运算
              System.out.println("++++++++++++++++++++++++++++++++++a3");
              System.out.println((a<3)&(a>a++));
              System.out.println(a);//3 左边false右边进行运算
              System.out.println("++++++++++++++++++++++++++++++++++a4");
              System.out.println((a>2)&(a>a++));
              System.out.println(a);//4 左边ture右边进行运算
      
      //        || 左边ture右边不进行运算
              System.out.println("++++++++++++++++++++++++++++++++++b1");
              System.out.println((b<3)||(b>b++));
              System.out.println(b);//1 左边ture右边不进行运算
              System.out.println("++++++++++++++++++++++++++++++++++b2");
              System.out.println((b>3)||(b>b++));
              System.out.println(b);//2 左边false右边进行运算
      
      //        | 无论左边true或false右边都进行运算
              System.out.println("++++++++++++++++++++++++++++++++++b3");
              System.out.println((b<3)|(b>b++));
              System.out.println(b);//3 左边true右边进行运算
              System.out.println("++++++++++++++++++++++++++++++++++b4");
              System.out.println((b>3)|(b>b++));
              System.out.println(b);//4 左边false右边进行运算
          }
      }
      
  • 位运算符:

    • &(按位与 两个是1才为1 0&0 0;0&1 0;1&1 1;1&0 0),

    • |(按位或 有1就为1),

    • ^(按位异或 相同为0,不同为1 0^0 0;0^1 1;1^1 0;1^0 1),

    • ~(取反 ~0 1;~1 0),

    • >>(二进制右移 原来是谁就补谁),

    • <<(二进制左移 补零)求2的四次方 左移三位效率最高

    • >>>(二进制无符号右移 补零)(了解)

      System.out.println(2<<3);//0000 0010左移三位0001 0000     16
      System.out.println(16>>3);//0001 0000右移三位0000 0010     2
      System.out.println(0b1<<4);//0000 0001左移四位0001 0000   16
      System.out.println(07<<1);//000 111左移一位001 110        14
      System.out.println(01<<1);//001左移一位010                 2
      System.out.println(0x10<<1);//0001 0000左移1位0010 0000   32
      
  • 条件运算符(三元运算符或三目运算符):?:

    • x ? y :z

      • 如果x==true,则结果为y,否则结果为z
    • //boobean_expr ? true_statement : false_statement;
      int a = 4;
      System.out.println(a<=0 ? "a小于0" : "a大于零为:" + a);//a大于零为:4
      
  • 拓展运算符:+=(加等于),-+(减等于),*=(乘等于),/=(除等于)

    • 字符串连接符 + ,String 字符串出现在前面拼接,字符串出现在后面前面先运算之后再拼接
    public class Demo04 {
        public static void main(String[] args) {
            int a = 10;
            int b = 20;
    
            a += b;//a = a+b 30
            System.out.println(a);
            a -= b;//a = a-b 10
            System.out.println(a);
            a *= b;//a = a*b 200
            System.out.println(a);
            a /= b;//a = a/b 10
            System.out.println(a);
    
            //字符串连接符 + ,String 字符串出现在前面拼接,字符串出现在后面前面先运算之后再拼接
            System.out.println("" + a+b);//1020 自动转为String类型 字符串出现在前面拼接
            System.out.println(a+b + "");//30  字符串出现在后面前面运算之后拼接
        }
    }
    
  • **++、–**放在变量之前和之后的区别

    • 放在b之前:先自加减,后赋值;

    • 放在b之后:先赋值,后自加减

    • //++、--放在变量之前和之后的区别
      int b = 3;
      int c = ++b;//放在b之前:先自加 b = b+1,后赋值
      System.out.println("b="+ b + ";" + "c=" + c);//b=4;c=4
      int d = b++;//放在b之后:先赋值,后自加 b = b+1
      System.out.println("b="+ b + ";" + "d=" + d);//b=5;d=4
      
      //幂运算 2^3(java中不能这样) 2*2*2=8 数学运算使用Math工具类中方法进行运算
      double pow = Math.pow(3,2);//3的2次方
      double pow2 = Math.pow(2,3);//2的3次方
      System.out.println(pow);//9
      System.out.println(pow2);//8
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值