• Java运算符、表达式、语句块


    一、运算符

     	在java中用于程序计算的操作i发统称为运算符,运算符分为如下几类:
    

    1、算术运算符

    算术运算符 说明
    + 加号两边是数值,可以运算,如果一边存在字符串,则当作连接符 a+b
    - 两个数相减,减号也可以当作负数 a-b -a
    * 两个数相乘,其中*不能省略 a*b
    / 两个数相除,必须保证数据类型一致,其中除数不能为0,否则出现算术错误 a/b
    % 对一个数取余 a%b
    ++ 对一个数自增 i++
    -- 对一个数自减 i--

    8

           //  +    -  *   /   %   所有运算符在计算时要保证数据类型一致
            int num1=100;
            int num2=200;
            int sum=num1+num2;
            int nul=num1-num2;
            int num3=-num2;  //-200
            System.out.println("两个数相加:"+sum);  //+  表示连接符
            System.out.println("两个数相减:"+nul);
            System.out.println("num2:"+num2+",num3:"+num3);
          //  System.out.println("num+num2:"+(num1+num2));
    
            int sum2=num1*num2;
            int sum3=num1/num2;
            System.out.println(sum3);  //  0
            System.out.println(num1/sum3);  //算术异常ArithmeticException
    
            //取模
            System.out.println(10%2);  //0
            System.out.println(1%5);  //1   小的数取模大的数是其本身
    
        }
    
       //自加     自减 ++     --   只能对整数进行
            int  i=1;
            i++;   //  i=i+1;
            System.out.println("i:"+i);
            int j=1;
            ++j;   //j=j+1;
            System.out.println("j:"+j);
    
            int a=1;
            int sum=a++;  //先将a+de赋值给sum,a在自加1
            int sum2=++a;   //先将a自加1,再将自加后的值赋值给sum2
            System.out.println("sum:"+sum);
            System.out.println("sum2:"+sum2);
            System.out.println("a:"+a);  // 3
            int sum3=a++ + a++;
            System.out.println("sum3:"+sum3);
            System.out.println("a:"+a);
    
            int b=1;
            int s1=b--;   //  b=b-1  s1的值为  b先赋值  再自减
            int s2=--b;    //b=b-1   s2的值为  b先自减   再赋值
            System.out.println("b:"+b);
            System.out.println("s1:"+s1);
            System.out.println("s2:"+s2);
    
            //  ++  --  综合
            int x=1;
            int y=2;
            int s3 = x++ + --x *(y-- + ++x);//1+1*4
            System.out.println("s3:"+s3);
            System.out.println("x:"+x);
            System.out.println("y:"+y);
    
    

    2、比较运算符

    ​ 用于比较两个表达式之间的结果 结果返回true 或 false

    比较运算符 说明
    > 比较左边是否大于右边的数,如果大于返回true,否则返回false
    < 比较左边是否小于右边的数,如果小于返回true,否则返回false
    >= 比较左边是否大于等于右边的数,如果大于等于返回true,否则返回false
    <= 比较左边是否小于等于右边的数,如果小于等于返回true,否则返回false
    == 比较左边是否相等右边的数,如果相等返回true,否则返回false,对于基本数据类型比较数值是否相等,对于引用数据类型比较 它们的地址是否相同(比较地址就是比较他们存储的内存地方)
    != 比较左边是否不等于右边的数,如果不等于返回true,否则返回false
       //自加     自减 ++     --   只能对整数进行
            int  i=1;
            i++;   //  i=i+1;
            System.out.println("i:"+i);
            int j=1;
            ++j;   //j=j+1;
            System.out.println("j:"+j);
    
            int a=1;
            int sum=a++;  //先将a+de赋值给sum,a在自加1
            int sum2=++a;   //先将a自加1,再将自加后的值赋值给sum2
            System.out.println("sum:"+sum);
            System.out.println("sum2:"+sum2);
            System.out.println("a:"+a);  // 3
            int sum3=a++ + a++;
            System.out.println("sum3:"+sum3);
            System.out.println("a:"+a);
    
            int b=1;
            int s1=b--;   //  b=b-1  s1的值为  b先赋值  再自减
            int s2=--b;    //b=b-1   s2的值为  b先自减   再赋值
            System.out.println("b:"+b);
            System.out.println("s1:"+s1);
            System.out.println("s2:"+s2);
    
            //  ++  --  综合
            int x=1;
            int y=2;
            int s3 = x++ + --x *(y-- + ++x);//1+1*4
            System.out.println("s3:"+s3);
            System.out.println("x:"+x);
            System.out.println("y:"+y);
    
    

    3、赋值运算符

    ​ 将表达式的结果 赋值给一个变量,只能赋值给变量 不能赋值给常量

    例如 a=3

    赋值运算符 说明 案例
    = 将=右边的结果 赋值给左边的变量 int a=2 把2赋值给a
    += 计算后的赋值,将+=右边的结果赋值给左边的变量 a+=2 等价于a=a+2
    -= 计算后的赋值,将-=右边的结果赋值给左边的变量 a-=b 等价于a=a-b
    *= 计算后的赋值,将*=右边的结果赋值给左边的变量 a**=b 等价于a=a * b
    /= 计算后的赋值,将/=右边的结果赋值给左边的变量 a/=b 等价于a=a/b b不等于0
    &= 计算后的赋值,将%=右边的结果赋值给左边的变量 a%=b 等价于a=a%b b不等于0
            //赋值运算符  =  +=  -=  *=  /=  %=
            int a=2;
            a+=2;
            System.out.println(a);//a
            a-=3;
            System.out.println(a);//1
            a*=2;
            System.out.println(a);//2
            a/=4;
            System.out.println(a);//0
    
            a+=a-=3; //    a+=(a-=3)
            System.out.println("a="+a);
    
            int x=2;
            x+=x-=x*=x++;
            //x = x +(x = x -(x = x *(x++)))
            //x=2+(x=2-(x=2*2))
            //x=2+(2-4)=0
            System.out.println("x="+x);
            
            //赋值运算符优先级最di    从右往左计算
            int z=1;
            int y=1;
            z+=(z++) + (z--) +(y-=z++);
            System.out.println(z);  //4
            System.out.println(y);  //0
            
        }
    

    4、逻辑运算符

    ​ 在Java中用于两个或两个以上的表达式,取逻辑判断的结果 通常需要使用逻辑运算符

    逻辑运算符 说明
    & 逻辑与,左右两边可以连接表达式,两个表达式都成立时,整个结果为true true&true true&false,flase&true flase&flase
    | 逻辑或,左右两边可以连接表达式,两个表达式任意一个成立时,整个结果为true true|true true|false,flase|true flase|flase
    逻辑非,对表达式取反 !flase !true
    && 短路与,与&类似,短路 特点 符号左边为false,右边不再计算
    || 短路或,与|类似,短路 特点 符号左边为true,右边不再计算
            //逻辑运算符
            System.out.println(true&true);  //true
            System.out.println(true&false);
            System.out.println(false&true);
            System.out.println(false&false);
            //true%true
            System.out.println(1>0 & 3>1);
            System.out.println(1>0 && 3>1);
            //  
            System.out.println(true|true);
            System.out.println(true|false);
            System.out.println(false|true);
            System.out.println(false|false);  //false
            //   \   短路或
            System.out.println(true||false);
    
            //取反
            System.out.println(!true);
            System.out.println(!false);
    
    

    总结:&与&&的区别 |与||的区别?

    回答: 1、&对于符号两边的表达式都会执行 &&符号左边为false,则右边不执行

    ​ |对于符号两边的表达式都会执行 ||符号左边为true,则右边不执行

    ​ 2、&、|两边可以直接写数字,按位计算,短路符号 不能直接计算

            // &&  与   &    的区别
            int a=1;
            int b=2;
            System.out.println(a>b && b++>0);
            System.out.println("b:"+b);
    //        System.out.println(a>b & b++>0);
    //        System.out.println("b:"+b);
    
            //  \  与   的区别
            System.out.println(a>=1 ||  a++<0);// a++不执行
            System.out.println("a:"+a);
            System.out.println(a>=1 | a++<0);
            System.out.println("再次输出a:" +a);
    
            //另外一个区别   &     两边可以是数值,但是短路符号不可以
    
    
    十进制 转换
    1 1*2的0次方
    2 1*2的1次方
    4 1*2的2次方
    ...... 对于2的倍数,1*2的n次方 转成二进制位1后面n个0
    64 1*2的6次方

    队医任意十进制转二进制,先查找比他晓的且离他最近的2的倍数,然后差值再进行二进制转换(拆分发)

    ​ 例如 96=64=32=1100000

    二进制转十进制

    公式 从个位开始,每个位上的数,乘以2的n次方 之和

      System.out.println(4&5);  //将结果转成二进制
            System.out.println(4|5);
            //  4的二进制  100
            //  5的二进制  101
            //  &    4     100
            //  |    5     101
    
            //十进制转二进制
            //1——》2的0次方   1
            //2——》2的1次方   10
            //4——》2的2次方   100
            //以此类推
            //64——》2的6次方   1000000
    
    

    5、位运算符

    移位运算符 说明 案例
    < < 左移:将一个数转成二进制之后,整体往左移动n位,扩大倍数,一个属向左移动n位,结果为这个数乘以2的n次方 3<<2等价于9*2的2次方
    > > 右移:将一个数转成二进制之后,整体往右移动n位,缩小倍数,一个属向右移动n位,结果为这个数除乘以2的n次方(除不尽单独考虑) 8>>2等价于8/2的2次方
    > > > 无符号的右移,不考虑符号位,将这个数整体往右移动
    ^ n 异或
    - n 数值取反
     //正整数的移位  <<    >>      >>>
            System.out.println(3<<2);//3*2^2=12
            System.out.println(7<<3);//7*2^3=56
            //对于正数的无符号右移和 右移结果一样
            System.out.println(16>>2);//4
            System.out.println(18>>2);//4
    
            System.out.println(5^9); //12
    
            System.out.println(3>>2);//0
            System.out.println(3>>>2);//0
    
    
            //负数的移位
            //负数的移位还是负数
            System.out.println(-4<<2);  //-4*2的2次方=-16
            //-16无符号右移2位
            System.out.println(-16>>>2);
            // 由于不考虑符号,移动后高位全补0变成正数
            //  正数的原码和补码一致  这个数即为所得
    
    
            // 取反
            System.out.println( ~5);
            //0000。。00000101
            //1111.。11111010  取反后成了负数  继续还原
            //1000.。00000101    +1  还原后加1
            //1000.。00000110  =  -6
    
    

    6、三目运算符

    ​ 判断式?结果1:结果2;

      public static void main(String[] args) {
            System.out.println(Math.random());
            //生成100以内的随机数
            int n=(int)(Math.random()*100);
            System.out.println("n:"+n);
            System.out.println(n%2==0?"这个数是偶数":"这个数是奇数");
        }
    

    二、表达式 语句块

    表达式

    ​ 通过运算符和操作数组成的元素,表达式不能单独在程序中,需要接受或者输出

    注意:这里的()表示方法的括号​、点号表述小数点、【】表示数组的下限

    ​ 2-5:用于得到结果的值

    ​ 6-12:用于运输算得到true、false

    ​ 13.14:是赋值 赋值的优先级最低

    语句块

      public static void main(String[] args) {
            //定义一个方法中的代码块
            {
                //局部变量只能使用再它所在的区域
                int a=1;
                a++;
                System.out.println("这是一个方法里面的代码块"+a);
            }
            //a++;
            if (true){
                System.out.println("这是一个if的语句块");
            }
    
        }
    
  • 相关阅读:
    [Functional Programming ADT] Initialize Redux Application State Using The State ADT
    [Angular] Angular i18n Pluralization Support
    [Functional Programming ADT] Combine Multiple State ADT Based Redux Reducers
    [Angular] Introduction to Angular Internationalization (i18n)
    [Javascript] Wrap an API with a Proxy
    [React] Detect user activity with a custom useIdle React Hook
    js确认删除对话框
    动态链接库 DLL
    [置顶] 自动视频跟踪系统的解决方案
    Checking Network Configuration requirements Failed
  • 原文地址:https://www.cnblogs.com/qzwx63/p/13755301.html
Copyright © 2020-2023  润新知