【JavaSE专栏8】运算符、表达式和语句

2023-08-01 14:52:27 浏览数 (1)

作者主页:Designer 小郑 作者简介:Java全栈软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发(Vue、SpringBoot和微信小程序)、系统定制、远程技术指导。CSDN学院、蓝桥云课认证讲师,全栈领域优质创作者。热爱技术、专注业务、开放合作、乐于分享,期待你我共同成长! 主打方向:Vue、SpringBoot、微信小程序

一、运算符是什么

运算符是提供计算功能的,如何编程语言都有自己的运算符,Java 语言也不例外,例如 -*/ 等。

大部分的运算符及其计算模式,同学们在小学、中学都已经学过,比如加减乘除的就没有必要再提。

同学们需要注意以下两点:

  1. 我们学过的运算符和 Java 语言的对应运算符,可能有变化。比如 / 为除法运算符,% 为取余运算符。
  2. 对于各种数学 / 物理公式,需要转换为 Java 编译器能够识别的形式。例如开根号的运算,需要写成 Math.sqrt(x)
  3. 等号 = 在 Java 中是赋值运算符,不再是相等的意思,赋值运算符的功能是将右边表达式的求值结果保存到左边的变量,比如 x = 5

二、表达式和语句是什么?

运算符加上运算数形成的字符串就是表达式

能够完成一条具体指令或操作的语法单位就是语句,语句一般以一个表达式加上分号 ; 形成。


三、算术运算符

算术运算符是能对各种整数、浮点数进行计算的运算符,如下表所示。

运算符

含义

样例

z = x y

-

z = x - y

*

z = x * y

/

z = x / y

%

取模

z = x % y

递增

x

递减

x –

=

相加并赋值

z = x

-=

相减并赋值

z -= x

*=

相乘并赋值

z *= x

/=

相除法并赋值

z /= x

%=

取模并赋值

z %= x

-

取负数

z = -x

同学们在学习算术运算符时,需要注意以下 5 点:

  1. - 运算符既可以是单目运算符,也可以是双目运算符。
  2. / 运算符的两个运算数都是整数时,会自动变为整数取余,比如 9 / 2 = 4,而不是 4.5
  3. % 时取余运算符,不是百分比,如 9 % 5 = 4
  4. -- 是自加运算符和自减运算符,即单目运算符。如果放在变量前面是先递增再参与运算,如果放在变量后面则先参与运算再自增。
  5. = 是复合赋值运算符,可以同等转换为另外的运算符,可以理解为简写。

四、关系运算符

关系运算符是用来比较两个运算数的大小、判断是否相等,如下表所示。

运算符

含义

样例

==

等于

x == y

!=

不等于

x != y

>

大于

x > y

<

小于

x < y

>=

大于等于

x >= y

<=

小于等于

x <= y

同学们在学习关系运算符时,需要注意以下 2 点:

  1. 以上关系运算符和日常生活中用到的有不同之处,比如 ==,判断相等用 == 而不是 =
  2. 关系表达式的计算结果是逻辑值,也就是 truefalse

五、逻辑运算符

逻辑运算符是用来做命题运算,Java 中的逻辑运算符如下表所示。

运算符

含义

样例

&

逻辑与

x & y

|

逻辑或

x | y

^

逻辑异或

x ^ y

!

逻辑非

! x

||

短路或

x || y

&&

短路与

x && y

同学们在学习逻辑运算符时,需要注意以下 5 点:

  1. & 为逻辑与运算符,是 并且 的意思,如果两个条件都成立则成立,否则不成立。
  2. | 为逻辑或运算符,是 或者 的意思,如果两个条件有一个成立则成立,如果都不成立则结果为不成立。
  3. ^ 为逻辑异或运算符,参与运算的两个命题必须相异,如果两个条件相互不一样则成立,否则不成立。
  4. ! 为逻辑非运算符,是单目运算符,可以将 true 改为 false,或者将 false 改为 true
  5. &&|| 是短路与、短路或运算符,通常用于复杂表达式的求值。同学们需要注意,如果前者命题已经将结果确定,则不进行后者命题的判断。比如 3 > 6 && 99 > 77 表达式,已知前者子表达式不满足,就不再对 99 > 77 进行判断,这也是考试经常考察的知识点。

六、位运算符

位运算符是将常量或变量,以二进制的方式,按位进行逻辑运算或移位计算,通常将 0 看为 false,将 1 看为 true,如下表所示。

运算符

含义

样例

~

按位非

z = ~ x

&

按位与

z = x & y

|

按位或

z = x | y

^

按位异或

z = x ^ y

>>

右移

z = x >> 2

>>>

前补 0 右移

z = x >>> 2

<<

左移

z = x << 2

同学们在学习位运算符时,需要注意以下 4 点:

  1. ~ 运算符是按位进行取反,比如 12 转为二进制为 1100,逐位取反后为 0011,即 ~ 12 等于 3
  2. & 按位进行与运算,如下所示。
代码语言:javascript复制
 10101
&01110
------
 00100
  1. | 按位进行或运算,如下所示。
代码语言:javascript复制
 10101
|01110
------
 11111
  1. ^ 按位进行异或运算,如下所示。
代码语言:javascript复制
 10101
^01110
------
 11011

七、其他运算符

除了上述运算符之外,还有三类其他运算符,分别为条件运算符、instanceof 运算符 和 字符串连接运算符

7.1 条件运算符

条件运算符的格式如下:

条件表达式 ? 表达式 1 : 表达式 2

如果条件表达式的值为 true,则取表达式 1 的值,否则取表达式 2 的值。

比如判断学生成绩等级,设学生成绩为 X。

X >= 60 ? “合格” : “不合格”


7.2 instanceof 运算符

instanceof 运算符用于测试某一实例对象是否属于指定类型,返回布尔值。

实例对象 instanceof 类名 / 接口名

提示:关于类和接口的知识将在后续课时中阐述,你只需要了解有 instanceof 这个运算符即可。


7.3 字符串连接运算符

使用字符串连接运算符可以将多个连接符连接起来

如果一个字符串和非字符串进行 运算,Java 会自动将其他类型转换为字符串,如下所示。

代码语言:javascript复制
public class Main {

    private static final int MAX_SIZE = 10;
    public static void main(String[] args) {

        System.out.println("aa"   "bb");
        System.out.println("1"   9);
        System.out.println(9   "1");
        System.out.println(9   1   "1");
        System.out.println(9   "1"   1);
    }
}

输出结果如下:

代码语言:javascript复制
aabb
19
91
101
911

八、运算符优先级

在含有多个运算符的表达式中,这些运算符按照一定的优先级进行运算。

在 Java 中,单目运算符优先级高于多目运算符;算数运算符优先级高于关系运算符;关系运算符优先级高于逻辑运算符;逻辑运算符优先级高于赋值运算符

总体优先级如下所示,优先级值越小越优先,同等级则按照从左往右的顺序执行

  • 优先级 1:圆括号、下标运算符、点运算符
  • 优先级 2:逻辑非运算符、按位取反、自增、自减、负号、类型转换
  • 优先级 3:乘法、触发、取余
  • 优先级 4:加法、减法
  • 优先级 5:左移、右移运算符
  • 优先级 6:关系运算符
  • 优先级 7:等于、不等于
  • 优先级 8:逻辑与或、逻辑异或、逻辑或、按位与、按位异或、按位或
  • 优先级 9:短路与、短路或
  • 优先级 10:条件运算符
  • 优先级 11:对象实例判断
  • 优先级 12: 赋值运算符、符合赋值运算符

九、课时总结

在本课时中,首先接触了 Java 运算符、表达式和语句的基本概念,接着依次学习了算数运算符、关系运算符、逻辑运算符、位运算符、条件运算符等知识,最后总结了多类运算符的优先级顺序。在下节课时将讲解 Java 注释的使用方式。

0 人点赞