MENU

运算符

November 16, 2021 • 编程,JAVA阅读设置

运算符

  1. 算术运算符:

    • +、-、*、/
    • % 取余、模运算
    • ++、--
  2. 赋值运算符:=
  3. 关系运算符:

    • 大小:>、<、>=、<=
    • 等于:==
    • 不等于:!=
    • instanceof
  4. 逻辑运算符:&&与、|| 或、!非

image_Dkr7LLqYsN.png

二元运算符

加减乘除

  • 当要除出小数时,一定要注意作用范围
public class Demo01 {
    public static void main(String[] args) {
        // 二元运算符
        //Ctrl + D : 复制当前行到下一行
        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/b);//输出0
        System.out.println(a/(double)b);//输出0.5
    }
}
  • 有一个为 long,结果为 long
  • 没有 long,都为 int
  • 如果有 double 类型,结果一定是 double
public class Demo02 {
    public static void main(String[] args) {
        long a = 1231635461654L;
        int b = 123;
        short c = 10;
        byte d = 8;

        System.out.println(a+b+c+d);//long
        System.out.println(b+c+d);//int
        System.out.println(c+d);//int
        //有一个为long,结果为long
        //没有long,都为int
        //如果有double,结果一定是double
    }
}

关系运算符

返回的结果:布尔值——false、true

public class Demo03 {
    public static void main(String[] args) {
        //关系运算符返回的结果:正确,错误    布尔值
        //if

        int a = 10;
        int b = 20;
        int c = 21;

        System.out.println(c%a);//取余、模运算

        System.out.println(a>b);
        System.out.println(a<b);
        System.out.println(a==b);
        System.out.println(a!=b);
    }
}

一元运算符

  • 自增 ++ 自减 --

    • a++/-- = a +/- 1
    • a++/--执行完这行代码后,先赋值,再自增
    • --/++a 执行完这行代码后,先自增,再赋值

      //++   -- ,自增、自减     一元运算符
      int a = 3;
      int b = a++;//执行完这行代码后,先赋值,再自增
      //a++  a = a + 1
      
      System.out.println(a);//4
      
      int c = ++a;//执行完这行代码后,先自增,再赋值
      //++a     a = a + 1
      
      System.out.println(a);//5
      System.out.println(b);//3
      System.out.println(c);//5
  • 幂运算

    • 借助 Math 工具类

      //幂运算2^3   2*2*2 = 8   很多运算,我们会使用一些工具类来操作
      double pow = Math.pow(3,2);
      System.out.println(pow);//9

逻辑运算符

  • && 与(and):逻辑与运算:两个变量都为真,结果才为 true
  • || 或(or):逻辑或运算:两个变量有一个为真,则结果为 true
  • ! 非(取反):如果是真,则变为假,如果是假则变为真

    • 短路运算(&&和 ||):比如与运算,若一个为假(或真),则不进行下一步运算

      //与and 或or 非
      boolean a = true;
      boolean b = false;
      
      System.out.println("a && b:"+(b&&a));//逻辑与运算:两个变量都为真,结果才为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);
      
      System.out.println(d);//false
      System.out.println(c);//5

位运算

  • & 与运算:两个都是 1,则为 1
  • | 或运算:有一个为 1,则为 1
  • ^ 异或运算:如果相同,则为 0 (二进制不进位加法)
  • ~ 取反:
  • 无符号右移
  • << 左移 >> 右移

    /*
    位运算:
    A = 0011 1100
    B = 0000 1101
    
    A&B = 0000 1100//两个都是1,则为1
    A|B = 0011 1101//有一个为1,则为1
    A^B = 0011 0001//如果相同,则为0   异或=二进制不进位加法
    ~B = 1111 0010//取反
    
    <<左移*2  >>右移/2
    2*8=16   2*2*2*2
    0000 0001 1
    0000 0010 2
    0000 0011 3
    0000 0100 4
    0000 1000 8
    0001 0000 16
     */
    System.out.println(2<<3);
    System.out.println(1<<3);
    System.out.println(3<<1);

拓展赋值运算符

  • 字符串连接符:+

    int a = 10;
    int b = 20;
    
    a+=b;//a = a + b
    a-=b;//a = a - b
    
    System.out.println(a);
    
    //字符串连接符  +,String
    System.out.println(a+b);//30
    
    System.out.println(""+a+b);//1020
    
    System.out.println(a+b+"");//30
    //优先级

条件运算符

  • ?:——

    • x ?y:z —— 如果 x==true,则结果为 y,否则为 z

      //x ? y : z
      //如果x==true, 则结果为y, 否则结果为z
      
      int score = 80;
      String type = score < 60 ? "不及格" : "及格";
      System.out.println(type);//及格
Last Modified: February 6, 2023