JavaSE入门---认识运算符

文章目录

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 移位运算符
  • 条件运算符
  • 运算符的优先级

计算机的最基本的用途之一就是执行数学运算,运算过程中就会用到运算符,那什么是运算符呢? 即:对操作数进行操作的符号,不同运算符操作的含义不同

算术运算符

1.基本四则运算符

		// + - * / %
        int a = 20;
        int b = 10;
        System.out.println(a+b);  //30
        System.out.println(a-b);  //10
        System.out.println(a*b);  //200
        System.out.println(a/b);  //2
        System.out.println(a%b);  //0  %相当与数学中求除法的余数

注:

  1. 都是二元运算符,使用时必须有左右俩个操作数。
  2. int / int 的结果还是int 并且会向下取整。
  3. 做除法和取模时,右操作数不能为0
  4. % 不仅可以对整型取模,也可以对double类型取模,但是没有意义,一般都是对整型取模。
  5. 俩侧操作数类型不一致时,会类型提升(向类型大的提升)

2.增量运算符

// += -= /= %=
        int a = 20;
        a += 10;        // a = a + 10;  30

        int b = 20;
        b -= 10;        // b = b - 10;  10

        int c = 20;
        c /=10;        // c = c / 10;  2

        int d = 20;
        d %=10;        // d = d % 10;  0

注: 只有变量才可以使用该类运算符,常量不能使用。

3.自增/自减运算符

// ++ --
        int a = 1;
        a++;        // a = a + 1;
        
        int b = 1;
        ++b;        // b = b + 1;
        
        int c = 1;
        c--;        // c = c - 1;
        
        int d = 1;
        --d;        // d = d - 1;

注:

  1. 如果单独使用 前置++ 和 后置++ 没有任何区别
  2. 如果混合使用 前置++ 先+1 再使用变量+1之后的值,后置++ 先使用变量原来的值 表达式结束后再给变量+1
  3. 只能给变量使用,常量不能使用。

关系运算符

		// == != < > <= >=  其运算结果只能是true或者false
        int a = 20;
        int b = 10;
        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<=b);    // false
        System.out.println(a>=b);    // true

注: 需要多次判断时不能连着写。比如: 不能写 3 < a < 4 因写为 a > 3 && a < 4

逻辑运算符

1.逻辑与 &&(相当于且)
语法规则: 表达式1 && 表达式2 左右表达式必须是boolean类型的结果
含义:只有俩个表达式都为真,结果才为真。只要有一个表达式为假,结果就是假。
JavaSE入门---认识运算符_第1张图片

		int a = 1;
        int b = 2;
        System.out.println(a==1 && b==2);  // true
        System.out.println(a>1 && b<5);    // false
        System.out.println(a>1 && b>5);    // false

2.逻辑或 || (相当于或)
语法规则:表达式1 || 表达式2 左右表达式必须是boolean类型的结果。
含义:只有俩个表达式都为假,结果才为假。只要有一个表达式为真,结果就是真。
JavaSE入门---认识运算符_第2张图片

		int a = 1;
        int b = 2;
        System.out.println(a>1 || b>5);    // false
        System.out.println(a==1 || b>5);   // true
        System.out.println(a>1 || b<5);    // true

3.逻辑非 !
语法规则: !表达式
含义:真变假,假变真
JavaSE入门---认识运算符_第3张图片

		int a = 1;
        int b = 2;
        System.out.println(!(a==1));  // false
        System.out.println(!(a>1));   // true

注:

  1. 对于&&,如果左侧表达式值为false,则表达式结果一定为false,不需要计算右侧表达式。
  2. 对于||, 如果左侧表达式值为true, 则表达式结果一定为true, 不需要计算右侧表达式。

位运算符

Java中数据存储的最小单位是字节,而数据操作的最小单位是比特位。每个比特位存储一位二进制数字。
位操作表示按二进制位运算。

1.按位与 &
含义:如果两个二进制位都是1,则结果为1,否则结果为0;

		int a = 10;
        int b = 20;
        System.out.println(a & b);

JavaSE入门---认识运算符_第4张图片
2.按位或 |
含义:如果两个二进制位都是0,则结果为0,否则结果为1;

		int a = 10;
        int b = 20;
        System.out.println(a | b);

JavaSE入门---认识运算符_第5张图片
3.按位取反 ~
含义:如果该位为0,则转为1.如果该位为1,则转为0;

		int a = 10;
        int b = 20;
        System.out.println(~a);

JavaSE入门---认识运算符_第6张图片
4.按位异或 ^
含义:如果两个数字的二进制位相同,则结果为0,否则结果为1;

		int a = 10;
        int b = 20;
        System.out.println(a^b);

JavaSE入门---认识运算符_第7张图片

移位运算符

按照二进制比特位来运算的;

1.<< 左移一位
含义:左移一位,右侧补0
:向左移时丢弃的是符号位,数字可能由整数变为负数,由负数变为整数

 		int a = 1;
        System.out.println(a<<1);

JavaSE入门---认识运算符_第8张图片
2.>> 右移一位
含义:右移一位,左侧补符号位

		int a = 1;
        int b = -1;
        System.out.println(a>>1);
        System.out.println(b>>1);

JavaSE入门---认识运算符_第9张图片
3.>>> 无符号右移
含义:右移一位,左侧补0

		int a = 1;
        System.out.println(a>>>1);

JavaSE入门---认识运算符_第10张图片

注:

  1. 左移一位相当于原数字*2 左移N位相当于原数字*2^N
  2. 右移一位相当于原数字/2 右移N位相当于原数字/2^N
  3. 计算机中移位运算效率高于乘除运算

条件运算符

语法规则:表达式1 ? 表达式2 :表达式3
含义:如果表达式1结果为真,则最终结果为表达式2.如果表达式1结果为假,则最终结果为表达式3.

        int a = 10;
        int b = 20;
        int max = (a > b) ? a : b;     // max = 20

注: 条件运算符只有一个,也是Java中唯一的一个三目运算符。

运算符的优先级

在一条表达式中,各个运算符可以混合使用,但是运算符的优先级不同。有些情况下会带来很大的麻烦。表达式优先级层级较多、数量也不少,因此,我特地重新归纳整理了一次巧记版本。点击此处查看:巧记运算符优先级
JavaSE入门---认识运算符_第11张图片

注: 我们平时在写代码时如果遇到运算符优先级不确定的情况时,在有可能由歧义的代码中加括号即可。

你可能感兴趣的:(JavaSE,开发语言,java)