运算符基础

运算符

算术运算符

  • *+ , - , , / , % , ++ , - - **

    //算数运算符
       int a = 10;
       int b = 20;
       int c = 25;
       int d = 25;
    
       System.out.println(a + b);
       System.out.println(a - b);
       System.out.println(a * b);
       System.out.println(a / (double) b);  //(a/b)运算出来是int型  则为0,所以这里我们需要考虑到小数进行一个强制转换。
    
    //取余,模运算
      System.out.println(c % a);  // c / a  25 / 10 = 2......5
       
    //定义不同类型相加
       long a = 1237234642356L;
       int b = 123;
       short c = 23;
       byte d = 8;
      System.out.println(a + b + c + d);//long  不同整数类型相加,其中有一个为long型,结果类型也为long
      System.out.println(b + c + d);//int  若没有long型,结果都为int类型。
     // System.out.println((String) (c + d));//不能将int类型转换为String
     System.out.println((double) c + d);//31.0  double类型
    
     // ++  --  自增,自减  一元运算符
        int a = 3;
        int b = a++;  //执行完这行代码后,先给b赋值,将a++的值3赋值给b,再自增  
        //a = a + 1
        System.out.println(a);
        //a = a + 1
        int c = ++a;//执行完这行代码后,先自增,再给c赋值  将++a的值5赋值给c
        System.out.println(a);//5
        System.out.println(b);//3
        System.out.println(c);//5
    

赋值运算符

  • =

    1)简单赋值运算符:=
    2)扩展赋值运算符:+=,-=,*=,/=,%=
      ---扩展赋值自带强转功能
    
    int a = 5;
    a += 10; //相当于a=(int)(a+10)
    System.out.println(a); //15
    a *= 2; //相当于a=(int)(a*2)
    System.out.println(a); //30
    a /= 6; //相当于a=(int)(a/6)
    System.out.println(a); //5
    
    //常见面试题:
    short s = 5;
    //s = s+10; //编译错误,需强转,改为: s=(short)(s+10);
    s += 10; //相当于: s=(short)(s+10);
    

关系运算符

> , < , >= , <= , == (java等于符号),!=

 //关系运算符返回的结果: 布尔值 true  false
        int a = 10;
        int b = 20;
        int c = 22;

System.out.println(a > b);//false
System.out.println(a < b);//true
System.out.println(a == b);//false 
System.out.println(a != b);//true
System.out.println(a++>10); //false-----a自增1变为11
System.out.println(a++>10); //true------a自增1变为 12

逻辑运算符

&& , || , !

1)&&:逻辑与(并且),两边都为真则为真,见falsefalse
     ---当第1个条件为false时,则发生短路(后面的不执行了)
  ||:逻辑或(或者),有真则真,见truetrue
     ---当第1个条件为true时,则发生短路(后面的不执行了)
   !:逻辑非(取反),非真则假,非假则真
 2)逻辑运算是建立在关系运算的基础之上的
     逻辑运算的结果也是boolean//与(and  两个都要)  或(or  我或者你)   非(for   取反 )
        boolean a = true;
        boolean b = false;

        System.out.println("a && b:" + (a && b));//逻辑与运算  两个变量都为真  结果才为true
        System.out.println("a || b:" + (a || b));//逻辑或运算  两个变量只要有一个为真  则结果为true
        System.out.println("!(a && b):" + !(a && b));//逻辑非运算 如果是真 结果为假 ,如果是假则结果为真

        //短路运算
        int c = 5;
        boolean d = (c < 4) && (c++ < 4);//  (c < 4)以及为假了 所以后面(c++ < 4) 中的c++不运行  所以c的结果还是5
        System.out.println(d);//false
        System.out.println(c);//5

位运算符

& , | , ^ , ~ , >> , << , >>>

        /*
        A = 0011 1100
        B = 0000 1101
        -----------------------------
        A&B (A与B 上下两个数进行比较  上下都为1则为1 否则为0 )
        A&B =0000 1100
        A|B(A或B 上下两个数进行比较  如果对应位0则为0 否则为1)
        A|B =0011 1101
        A^B(A异或B  上下两个数进行比较  如果对应位相同则为0  否则为1 )
        A^B =0011 0001
        ~B(非A即B  上下两个数进行比较 取对应位相反的数 )
        ~B =1111 0010




         面试题:
         2*8 = 16  2*2*2*2
         <<  *2
         >>  /2

         0000 0000   0
         0000 0001   1
         0000 0010   2
         0000 0011   3
         0000 0100   4
         0000 1000   8
         0001 0000   16
        */

        System.out.println(2 << 3);//2*2*2*2 16

条件运算符

**? : **

         1)语法:
                boolean?1:2
         2)执行过程:
     整个表达式是有值的,它的值要么是?号后的数1,要么是:号后的数2
          计算boolean的值:
            若为true,则整个表达式的结果为?号后的数1
            若为false,则整个表达式的结果为:号后的数2

        int score = 80;
      String test = score < 60 ? "不及格" : "及格";
        System.out.println(test);//及格
        int score = 50;
        String test1 = score < 60 ? "不及格" : "及格";
        System.out.println(test1);//不及格

字符串连接

+

+:
  1.1)若两边都是数字,则做加法运算
  1.2)若旁边出现了字符串,则做字符串连接   
      注意:任何类型的数据与字符串相连,结果都是字符串类型----同化作用
        int a = 10;
        int b = 20;

        a += b; //a=a+b
        a -= b;//a=a-b

        //字符串连接符  +  ,String
        /*
        面试题
         */
        System.out.println("" + a + b);//1020   字符串在前面实现字符串拼接
        System.out.println(a + b + "");//30  字符串在后面 前面依旧进行运算
  
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值