16.运算符
  • 算术运算符 +,-,*,/,%,++,–
  • 赋值运算符 =
  • 关系运算符(比较运算符)>, >=, <=, <, ==, != ,instancof
  • 逻辑运算符 &&, ||, !
  • 位运算符 & , | , ^ , ~, >> , <<, >>> (了解!!)
  • 条件运算符 ?:
  • 扩展赋值运算符 += , -= ,*= , /=
package operator;

public class Demo1 {
    public static void main(String[] args) {
//        二元运算符
        int a = 10;
        int b = 20;

        System.out.println(a + b);      //30
        System.out.println(a - b);      //-10
        System.out.println(a * b);      //200
//        System.out.println(a / b);      //0  存在精度问题需要进行强制转换
        System.out.println(a / (double) b);  //0.5

        System.out.println(a % b);      //10


    }
}

package operator;

public class Demo2 {
    public static void main(String[] args) {
        long a = 132456468735L;
        int b = 520;
        short c = 120;
        byte d = 20;

        System.out.println(a + b + c + d); //Long  如果参与运算的整数种有long则最终结果为long
        System.out.println(b + c + d); //Int 否则其他没有long的整数相加,结果都为int
        System.out.println(c + d); //Int
    }
}

  • 其他没有long的整数相加,结果都为int
    Java的运算符基础知识与扩展_javase

关系运算符

package operator;

public class Demo3 {
    public static void main(String[] args) {
//        关系运算符 返回值是一个布尔值 正确,错误
        int a = 10;
        int b = 10;
        int c = 20;

        System.out.println(a > b);      //false
        System.out.println(a == b);     //true
        System.out.println(c < b);      //false
        System.out.println(c <= b);     //false
        System.out.println(c >= b);     //true
        System.out.println(c != b);     //true

    }
}

一元运算符

package operator;

public class Demo4 {
    public static void main(String[] args) {
//        一元运算符  ++ ,--
        int a = 10;
        int b = a++;  // ++a ---> 先赋值再自增  b = a++; 相当于 b = a; a = a + 1
        int c = ++a;  // ++a ---> 先自增再赋值  b = ++a;  相当于 a = a + 1; b = a;

        System.out.println(a);  //12
        System.out.println(b);  //10
        System.out.println(c);  //12
    }
}

逻辑运算符

package operator;

public class Demo5 {
   public static void main(String[] args) {

//        逻辑与&&   逻辑或||  逻辑非!
       boolean a = true;
       boolean b = false;

       System.out.println("a&&b:" + (a && b));      //false  一假则假
       System.out.println("a||b:" + (a || b));      //true   一真则真
       System.out.println("!(a&&b):" + (!(a && b)));//true   真假取反


//        短路运算
       int i = 4;
       boolean j = 4 < 3 && i++ > 5;  // 如果前边的条件已经满足了判断,则不会进行后边的运算
       System.out.println(j);  // false
       System.out.println(i);  // 4
   }
}

位运算

package operator;

public class Demo6 {
    public static void main(String[] args) {
        /*
         * &与,|或,~非,^异或
         *
         * A = 0000 1010
         * B = 1100 0011
         *
         * A&B = 0000 0010
         * A|B = 1100 1011
         * A^B = 1100 1001
         * ~A = 1111 0101
         *
         *    <<左移 *2  (移多少位乘多少个2)
         *    >>右移 /2  (移多少位除以多少个2,不足时高位补0)
         *
         *   效率极高!!
         *   0000 0000   -->0
         *   0000 0001   -->1
         *   0000 0010   -->2
         *
         * */

        System.out.println(2 << 3);  //16
        System.out.println(4 >> 3);  //0
    }
}

赋值运算符与字符串连接符

package operator;

public class Demo7 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        b += a;  // 相当于 b = b + a
        System.out.println(b);  //30

//      字符串连接符 +  当 + 号前一个变量为字符串时,+ 号为字符串连接符,会进行一个字符串的拼接操作,最终结果为一个String
        System.out.println("" + a + b);  //1030

    }
}

条件运算符与三元表达式

package operator;

public class Demo8 {
    public static void main(String[] args) {

        int score = 80;
        int score2 = 59;

//      三元表达式 x ? y : z   --> 如果x为真,结果为y,如果x为假,结果为z

        String ret1 = score > 60 ? "及格" : "不及格";
        String ret2 = score2 > 60 ? "及格" : "不及格";

        System.out.println(ret1);  //及格
        System.out.println(ret2);  //不及格

    }
}

运算符优先级

  • ()
  • 一元运算符(最高)
  • 算术运算符
  • 不需要可以去记忆优先级,必要时可以通过 ( ) 来改变优先级顺序,并不影响性能