运算符

运算符 程序中一种很特殊的符号 连接程序中需要参与的变量(前提条件是该变量有值)
"" '' ; - _ ,
算术运算符 + - * / % ++i 自加 i++ i自加1 --i i-- i自减1
赋值运算符 +=
比较运算符(关系运算符) 数字(整数/小数) 表达式(变量+运算符)
逻辑运算符 与& 或| 非!
三目(三元)运算符 1个字节 = 8 bit(位) : ?

  1. ** 算术运算符:+ - * / %**
    // + 第一个作用:连接变量(变量的类型:基本类型+引用类型(String))通常情况下字符串拼接

    String name = "张三";
    int age = 20;
    System.out.println(name+age);
    
    int a = 20;
    int b = 10;
    

    //第二个作用:相加运算

     int c = a+b;//30
    

    //+第三个作用:正数>0(0是自然数,0也是整数)
    int a2 = 19;
    int b2 = +a2;
    System.out.println(b2);
    // - 第一个作用:相减运算

    int c = a-b;//10
    System.out.println(c);
    
    //-第二个作用:负数<0
    
    int a4 = 20;
    int b4 = -20;
    

    System.out.println(b4);

    //*重量级 作用:乘法运算

    int c = a * b;//200
    System.out.println(c);

    // % 作用:除法运算 求余数(取模)

    int c = a % b;//0
    System.out.println(c);

    //  /正数除以负数
    
    int c9 =a7 / -b7;
    System.out.println(c9);
    

    int c10 = a7 % -b7;
    System.out.println(c10);

    /*在除法运算中,余数正负随着被除数走,但是商输的正负(只要除数和被除数
    其中有且仅一个为负数即为负数)否则为正数
    */
    // ++ 自加运算符

    int number = 10;
    number += 5;
    System.out.println(number);
    int number2 = 10;
    number2++;//等价于 number2 = number2 +1;等价于number2 += 1
    
    //如果变量在++运算符的左边,那么在运算过程中,先进行++运算符左边当运算,在执行++运算
    

    //变量在++运算符当右边

    int num4 = 10;
    int plus2 = 5;
    num4 += ++ plus2;
    System.out.println(num4);//16
    System.out.println(plus2);//6;
    

    //如果变量在++运算符的右边,那么在运算过程中,先进行++运算,在进行其他运算
    //说明:不管变量是在++运算符的左边还是右边,对于该变量本身都会做自加运算
    // -- 自减运算符

    int num5 = 10;
    int reduction = 5;
    num5 -= reduction--;//5
    num5--;//9
    System.out.println(num5);//5
    
    //备注:如果--运算符和其他运算符混合使用,那么执行原理等同于++运算符
    

2.//赋值运算符
/*
赋值运算符:就是给变量赋值(初始花)
= 等号代表当意思是把等号右边当数据赋值给等号左边当变量
+=相加赋值,就是该运算符左边的运算符当变量相加运算符右边的数据当结果又赋值给该运算符左边的变量
-= 相减赋值 意思等同上边 相减
*= 相乘赋值 意思等同上边 相乘
/= 相除赋值 意思等同上边 相除 求商数
%= 相除赋值 意思等同上边 相除 求余数
*/
//相加运算

     int a =10;
     a += 10;//a = a + 10--》20

     //-= 相减运算

    int a2 = 10;
    a2 = a2-5;//5
    a2 -= 5;

    // *= 相乘运算

    int a3 = 10;
    a3 = a3*5;
    //a3*=5

  //  /= 相除运算 求商数

    int a4 = 13;
    a4 =a4/5;
    //a4 /=5
    System.out.println(a4);//2

  //  %= 相除运算 求余数

    int a5 = 13;
    a5 %=5;
    //a5 = a 5% 5
    System.out.println(a5);

/*
3.** 比较运算符**
>大于 <小于 等于 >=大于等于 <=小于等于
!=不等于
备注:比较运算符中“等于”符号是“
”,而不是“=”。
2.比较运算符当结果就是布尔类型值,要么是true,要么是false.
3.比较运算符可以连接表达式或者语句
/
/

4. 逻辑运算符 与& 或| 非!
在程序中,运算的是布尔类型值(可以是具体的true,false,也可以是布尔类型当表达式)
结果依然是布尔类型值。
*/

    boolean bool = true;
    boolean bool2 = false;
    boolean bool3 = bool&bool2;//逻辑运算中的”与“的运算

    System.out.println(bool3);

    //说明:与 &运算符 在程序运算过程中,只要有一个false,结果就是false,否则为true
    // 或运算 |

    boolean var01 = true;
    boolean var02 = false;
    boolean var03 = var01 |var02;
    System.out.println(var03);

    //说明:或|运算符 在程序运算过程中,只要有一个true,结果就是true,否则为false
    //非运算 !

    boolean var04 = false;
    boolean var05 = true;
    boolean var06 = !var04;
    System.out.println(var06);

    //非运算符 ! 在程序运算中,一般只能连接布尔类型值而且非运算符只能放在布尔类型的左边,
    // 结果就是对连接的该布尔类型值取相反结果。
    //异或 ^   异或运算符

    boolean var07 = true;
    boolean var08 = false;
    boolean result = var07^var08;
    System.out.println(result);//true

    //说明: 异或运算符,在程序运算中,同为false,异为true。
    //如果异或运算符连接的前后左右布尔类型变量(表达式)的值相同结果为false
    //如果异或运算符连接的前后左右布尔类型变量(表达式)的值不相同结果为true
    //备注:如果和或运算符做对比,不同之处,当左右都为true的时候,结果为false
    //扩展:与& 或| 非! 异或^

    boolean bool4 = true;
    boolean bool5 = false;
    boolean bool6 = bool4 && bool5;

    //在程序中,与运算符,通常使用双& &&
    //& 与 && 异同点:相同点,都是做与运算,不同点,&&可以实现断路(短路)
    //备注:短路效果,当&&符号左边的布尔类型值可以确定为false的时候,
    // 那么程序在执行到&&符号时,会发生跳跃,也就是&&后面的表达式程序不在执行了
    // 或运算符 || 效果等同与&&,在程序中,通常使用的是"||"

    boolean bool7 = true;
    boolean bool8 = false;
    boolean bool9 = bool7 || bool8;
    System.out.println(bool9);

   //备注:|| 或运算符,在程序运行中,如果|| 连接的左边的布尔类型值为true,
   // 那么程序也会发生跳跃,形成短路现象
  1. /*
    位运算符 位
    位 bit 计算机中最小的信息单位为bit(位) 一个bit 上存储的是0或者1
    计算机中最小的存储单位是byte(字节) 1byte=8bit
    二进制的运算
    与位运算 &
    或位运算 |
    非位运算 ×
    异或位运算 ^
    移位位运算 >> 右移 << 左移 >>>无符号右移
    十进制 满10进1
    二进制 满2进1

    */
    

    //与位运算 &

    int a = 13;//二进制 13=1101= 23+22+2^0=8+4+1=13
    int b = 5;//5=21+20=101
    int c = a&b;
    System.out.println(c);

    //备注:在于位运算中,如果参与运算的二进制值中有一个为0 ,那么运算结果为0
    //当前后运算的二进制值的长度不一致时,那么程序会在短的那一方高位补0,短几位就补几个0,保持长度一致
    //或位运算符 | 参照逻辑运算符中或的规律 有一个为1,结果即为1

    int a1 = 28;//28 = 24+23+2+2=011100
    int b1 = 36;//36 = 25+22 =100100
    int c1 = a1|b1;// =111100=32+16+8+4=60
    System.out.println(c1);//60

    //异或位运算符 ^ 参照逻辑运算符中异或的规律:同为0,异为1

    int a2 = 123;//123= 26+25+24+23+21+20=01111011
    int b2 = 134;//123= 2^7 + 2^2 + 2^1 =10000110
    int c2 = a2^b2;// =11111101
    System.out.println(c2);//1111111=128+64+32+16+8+4+1=253

  2. /*
    三目运算符
    语法格式:
    布尔类型值 ? 该布尔类型值的真的结果值 :该布尔类型值为假的结果值
    结果值依据布尔类型表达式,当表达式为真,结果就是紧邻问号“?”后面的结果值
    当表达式为假的时候,结果就是冒号“:”后面的结果值
    */
    //第一种用法:直接在输出语句使用

    int a = 10;
    int b = 20;
    System.out.println(a>b?"a>b?":"a<b√");
    System.out.println(a<b?true:false);
    System.out.println(a<=b?"a<=b√":false);
    System.out.println(a>=b?a:b);

    //第二种用法:在语句中使用(不是输出语句) 赋值运算中

    int c = a>b ? a :b;//获取的是a 、b的最大值
    String d = a>b ?"是真的吗?":"你是假的";
    System.out.println(c);
    System.out.println(d);

    //说明:如果三目运算符是在输出语句中,那么对三目运算符的结果值真假的数据类型不要求
    //如果不是在输出语句中,在其他的语句中,如赋值运算中,那么久需要严格控制三目运算符的结果值真假的数据类型
    //真假的结果值类型要一致,保持和赋值运算中的变量的数据类型一致。

原文地址:https://www.cnblogs.com/luayan/p/13892895.html