算术运算符、 赋值运算符、扩展运算符、关系运算符、逻辑运算符、位运算符、条件运算符、字符串连接符

运算符介绍

  • 算术运算符
  • 赋值运算符
  • 扩展运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 条件运算符
  • 字符串连接符

运算符分类

Java exchange什么意思 java%什么意思_操作数

算术运算符

+、-、*、/、%(%指的是取余数):加减乘除取余这几个操作符属于二元运算符。
二元运算符指的是需要两个操作数才能完成运算的运算符。
其中的 % 是取模运算符,即求余数

二元运算符的运算规则:

整数运算

  1. 如果两个操作数有一个为 Long 类型,则结果也为 long 。
  2. 没有 long 时,结果为 int 。即使操作数全为 short,byte,结果也是 int。

浮点运算

  1. 如果两个操作数有一个为 double,则结果为 double
  2. 两个操作数都为 float,则结果才为 float
// 测试算术运算符
public class testOperator01 {
    public static void main(String[] args) {
        byte a = 1;
        int b = 2;
        long b2 = 3;
        // 报错,c 为 int 类型。因为无论short,byte,都默认是 int,所以不能放在 byte 中。没有 long 时,结果为 int
        byte c =  a + b; // 报错
        // c2 为 long 类型。因为当操作数中有一个为 long 时,结果也为 long 类型, long 类型不能放在 int 中
        int c2 = b2 + a; // 报错

        // 表数范围较大的时候,会自动转换类型,不会报错
        float f1 = 3.14F;
        // double 和 float 的表数范围比 int、byte、long 要大,所以不会报错。
        double d = b + b2;  // 正确
        float d1 = b + b2;  // 正确
        // 6.2 是 double 类型,所以结果 d2 也是 double 类型,其无法放进 float 中
        float d2 = f1 + 6.2; // 报错
    }
}

取模运算

  1. 操作数可以为浮点数,一般使用整数,结果为“余数”
  2. “余数”符号和左边操作数一样。如7%2=1,-7%2=-1,7%-2==1
// 运算结果“余数”的符号和左边操作数一样。
System.out.println(-9%4);   // 结果为 -1
System.out.println(9%-4);   // 结果为  1
System.out.println(9%4);    // 结果为  1
System.out.println(-9%-4);  // 结果为 -1

运算符:自增 ++、自减 --

算术运算符中 ++、-- 属于一元运算符,该类运算符只需要一个操作数。

测试自增 ++、自减 -- 算术运算符

public class testOperator01 {
    public static void main(String[] args) {
        // 测试自增:++
        int a = 3;
        int b = a++;   // 先给 b 赋值,然后 a 再自增,主要看 ++ 放置的位置
        int c = ++a;   // a 先自增,再复制给 c ,主要看 ++ 放置的位置
        System.out.println("a="+a+"\nb="+b+"\nc="+c); // 测试结果为 a=4,b=3,c=5

        // 测试自减:--
        int a1 = 3;
        int b1 = a1--;   // 先给 b1 赋值,然后 a1 再自减,主要看 -- 放置的位置
        int c1 = --a1;   // a1 先自减,再复制给 c1 ,主要看 -- 放置的位置
        System.out.println("a1="+a1+"\nb1="+b1+"\nc1="+c1); // 测试结果为 a1=1,b1=3,c1=1
    }
}

赋值运算符

赋值运算符及其扩展运算符

含义如图所示:

Java exchange什么意思 java%什么意思_Java exchange什么意思_02

代码示例:赋值运算符及其扩展运算符

// 赋值运算符及其扩展运算符运算示例
public class testOperator01 {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
        int c = 5;
        a += b;  //相当于 a = a + b
        System.out.println("a="+a+"\nb="+b); // 结果为 a = 7,b = 4
        b *= c;
        System.out.println("b="+b+"\nc="+c); // 结果为 b = 20,c = 5
    }
}

关系运算符

  1. 关系运算符用于做比较运算
  2. 关系运算符的结果为布尔值:true / false

关系运算符

Java exchange什么意思 java%什么意思_运算符_03

注意点

  1. = 是赋值运算符,而真正判断两个操作数是否相等的运算符是 ==
  2. == 、!= 是所有(基本和引用)数据类型都可以使用
  3. > 、>= 、< 、<= 仅针对数据类型(byte/short/int/long,float/double 以及 char)
// 测试关系运算符
public class TestOperator02 {
    public static void main(String[] args) {
        // 测试基本关系运算符
        int c = 3;
        System.out.println(c==3); // true
        System.out.println(c!=3); // false
        System.out.println(c>=3); // true
        System.out.println(c>3);  // false

        // 比较 char 数据类型
        // char 
        char a = 'a';
        char b = 'b';
        // char 类型在做比较时,会转化成 数字 进行计算
        System.out.println(a==b); // false
        System.out.println(a>=b); // false
        System.out.println(a<=b); // true
        // 输出结果为字符 a,只有在比较时才会转化成数字进行比较
        System.out.println(a);    // 输出结果为字符 a
        // 可以通过强转,将字符 转为 数字
        System.out.println((int)a);  // 97
        System.out.println(0+a);     // 97
        System.out.println((int)b);  // 98
        System.out.println(0+b);     // 98
    }
}

逻辑运算符

逻辑运算符图表

Java exchange什么意思 java%什么意思_Java exchange什么意思_04

逻辑与、逻辑或、逻辑异或、短路与、短路或、逻辑非
逻辑与 &:两个操作数为 true 才为 true,否则为 false
逻辑或 |:其中一个操作数为 true,则结果为 true
逻辑异或 ^ :相同为 false,不同为 true
短路与 &&:只要有一个为 false,则直接返回 false
短路或 ||:只要有一个为 true,则直接返回 true
逻辑非 ! :取反,!true 为 false,!false 为 true

public class TestOperator03 {
    public static void main(String[] args) {
        boolean b1 = true;
        boolean b2 = false;
        System.out.println(b1&b2); // false
        System.out.println(b1|b2); // true
        System.out.println(b1^b2); // true
        System.out.println(!b2); // true

        // 测试短路与、短路或
        boolean b3 = 1>2 && 2<(3/1); // 短语与:第一个操作数为 false,则整个逻辑表达式值为 false
        boolean b4 = 1>2 || 2<(3/1); // 短路或:有一个为 true,则整个逻辑表达式值为 true
        System.out.println(b3);      // false
        System.out.println(b4);      // true
    }
}

注意点

  1. 短路与 和 短路或 采用短路的方式,从左往右计算。
  2. 如果通过运算符左边的操作数能够确定该逻辑表达式的值,则不会继续计算运算符右边的操作数,直接输出对应值,以此提高效率。

位运算符

位运算符指的是进行二进制位的运算

常用的位运算符

Java exchange什么意思 java%什么意思_System_05

操作数演示

Java exchange什么意思 java%什么意思_运算符_06

位运算代码演示

public class TestOperator04 {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
        System.out.println(a&b); // 0
        System.out.println(a|b); // 7
        System.out.println(a^b); // 7
        System.out.println(~a);  // -4

        // 移位运算
        int c = 3<<2;  // 结果为12 。c = 3 * 2 * 2
        int d = 3<<4;  // 结果为48 。d = 3 * 4 * 4
        int e = 12>>2; // 结果为3 。e = 12 / (2*2)
        int f = 3>>4;  // 结果为0 。f = 3 / (2*2)
        System.out.println(c); // 12
        System.out.println(d); // 48
        System.out.println(e); // 3
        System.out.println(f); // 0
        System.out.println(3/4);   //结果为0,取整运算。有 0 个 4,所以结果为 0
        System.out.println(3%4);   //结果为3,取余运算。余数为 3,所以结果为 3
    }
}

注意点:

  1. 按位或:有 1 为真,全 0 为假
  2. 按位异或:不同为真,相同为假
  3. ~ 取反运算是单目运算,用来求一个位串信息按位的反,只能对一个数进行操作(对转换后的二进制数进行取反:0 <转> 1)

字符串连接符

注意点

  1. "+" 运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串进行连接。
  2. "+" 运算符如果两侧的操作数全为数字时,则进行数字之间的计算。
  3. "+" 运算符进行运算时,如果字符型数据遇到数字,会将自身转换为相应的数字进行“加”运算
public class TestOperator05 {
    public static void main(String[] args) {
        String a = "3";
        int b = 4;
        int c = 5;
        char d = 'a';  // 字符型数据
        System.out.println(a+b+c);// 结果为 345,先 a + b 进行字符串拼接,随后再 + c 进行字符串拼接
        System.out.println(b+c+a);// 结果为 93,先是 b + c 数字运算,再与 a 进行字符串拼接
        System.out.println(d);    // 结果为 a,
        System.out.println(b+c+d);// 结果为 106。字符型数据 和 数字进行 “+” 运算时,字符型数据会变成对应的数字进行运算
    }
}

条件运算符

语法格式

// x 为 boolean 类型表达式,先计算 x 的值,若为 true,则整个运算符的结果为表达式 y 的值,反之运算符结果为表达式 z 的值

x ? y : z

代码示例

// 测试条件运算符
public class TestOperator06 {
    public static void main(String[] args) {
        int score = 80;
        int x = -100;
        String type = score < 60?"不及格":"及格";
        System.out.println(type); // 结果为 及格
        // 测试条件运算符套用
        System.out.println(x > 0?1:(x == 0?0:-1));  // 结果为 -1
    }
}

运算符优先级

Java exchange什么意思 java%什么意思_Java exchange什么意思_07

注意点

  1. 常用运算符优先级:逻辑非 > 逻辑与 > 逻辑或
  2. a || b && c 的运算结果为: a || (b && c) 而不是 (a || b)&& c 。结果由运算符优先级产生。
  3. 表达式中优先使用小括号来组织区分。

运算符知识内容自此结束。

偷偷向银河要了一把碎星✨只等你闭上眼睛撒入你的梦中。