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

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

一、运算符是什么

运算符是提供计算功能的,如何编程语言都有自己的运算符,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. & 按位进行与运算,如下所示。
10101
&01110
------
 00100
  1. | 按位进行或运算,如下所示。
10101
|01110
------
 11111
  1. ^ 按位进行异或运算,如下所示。
10101
^01110
------
 11011

七、其他运算符

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

7.1 条件运算符

条件运算符的格式如下:

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

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

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

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


7.2 instanceof 运算符

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

实例对象 instanceof 类名 / 接口名

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


7.3 字符串连接运算符

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

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

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);
    }
}

输出结果如下:

aabb
19
91
101
911

八、运算符优先级

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

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

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

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

九、课时总结

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

相关文章
|
3月前
|
Java
哇塞!Java 基本语法的运算符,你真的懂了吗?算术运算符篇
【6月更文挑战第14天】Java中的算术运算符是编程基础,包括加法`+`(用于数字相加和字符串拼接)、减法`-`、乘法`*`、除法`/`(需防除数为零)和取余`%`。它们在计算位移、周期性问题等场景中广泛应用。理解并熟练掌握这些运算符,能提升编程效率和代码质量。现在就开始实践,发掘它们的更多可能性吧!
35 3
|
4月前
|
Java 开发者
Java的三元表达式用法
Java的三元表达式用法
|
3月前
|
存储 C语言
C primer plus 学习笔记 第5章 运算符、表达式和语句
C primer plus 学习笔记 第5章 运算符、表达式和语句
|
4月前
|
存储 C语言
C语言程序设计——赋值表达式
C语言程序设计——赋值表达式
|
4月前
|
Java
深入浅出Java基础语法:标识符、关键字、变量、数据类型、运算符与控制语句
深入浅出Java基础语法:标识符、关键字、变量、数据类型、运算符与控制语句
26 0
|
4月前
|
存储 Java 测试技术
滚雪球学Java(09):运算符、表达式和语句
【2月更文挑战第6天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!
40 0
|
存储 Java C语言
教你精通JavaSE语法->第三章、运算符
计算机的最基本的用途之一就是执行数学运算,即:对操作数进行操作时的符号,不同运算符操作的含义不同。-------->复习或初学Java语法
67 0
|
10月前
|
存储 机器学习/深度学习 Java
【JavaSE语法】运算符
【JavaSE语法】运算符
63 0
|
11月前
|
存储 Java 编译器
基本语法、数据类型与运算符【JavaSE】
基本语法、数据类型与运算符【JavaSE】
28 0
|
Java C语言
《JavaSE-第三章》之运算符
《JavaSE-第三章》之运算符