【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 注释的使用方式。

相关文章
|
Java 开发者
Java一分钟之-Quasar:协程库
【6月更文挑战第12天】Quasar是Java的高性能协程库,通过字节码增强实现轻量级并发模型——协程和通道,降低并发处理的复杂性和资源消耗。本文探讨了Quasar的常见问题,如内存泄漏、死锁和过度使用,提出相应避免策略,并提供了一个简单的协程间数据交换的代码示例。正确使用Quasar能提升程序性能和可维护性。
821 1
|
监控 项目管理
软件工程IT项目管理复习之 十二:项目采购管理
软件工程IT项目管理复习之 十二:项目采购管理
498 0
|
人工智能 自然语言处理 机器人
对话阿里云 CIO 蒋林泉:AI 时代,企业如何做好智能化系统建设?
10 月 18 日, InfoQ《C 位面对面》栏目邀请到阿里云 CIO 及 aliyun.com 负责人蒋林泉(花名:雁杨),就 AI 时代企业 CIO 的角色转变、企业智能化转型路径、AI 落地实践与人才培养等主题展开了讨论。
24276 69
对话阿里云 CIO 蒋林泉:AI 时代,企业如何做好智能化系统建设?
|
人工智能 自然语言处理 程序员
提交通义灵码创新实践文章,重磅好礼只等你来!
通义灵码创新实践征集赛正式开启,发布征文有机会获得重磅好礼+流量福利,快来参加吧!
23468 21
|
人工智能 架构师 IDE
阿里云通义灵码重磅升级,能自主修BUG、开发应用的AI程序员来了
通义灵码AI编程能力再进化,说几句话就能开发网页
23668 9
|
小程序
微信小程序开发---购物商城系统。【详细业务需求描述+实现效果】
这篇文章详细介绍了作者开发的微信小程序购物商城系统,包括功能列表、项目结构、具体页面展示和部分源码,涵盖了从首页、商品分类、商品列表、商品详情、购物车、支付、订单查询、个人中心到商品收藏和意见反馈等多个页面的实现效果和业务需求描述。
微信小程序开发---购物商城系统。【详细业务需求描述+实现效果】
|
存储 Java
HashMap之链表转红黑树(树化 )-treefyBin方法源码解读(所有涉及到的方法均有详细解读,欢迎指正)
本文详细解析了Java HashMap中链表转红黑树的机制,包括树化条件(链表长度达8且数组长度≥64)及转换流程,确保高效处理大量数据。
823 1
|
Oracle 关系型数据库 MySQL
一文了解PostgreSQL MVCC机制
一文了解PostgreSQL MVCC机制
1072 0
|
监控 搜索推荐 数据挖掘
淘宝关键词设置:技巧与实战指南
淘宝关键词设置:技巧与实战指南
2298 1
|
安全 Java
使用FilterChain实现Java中的过滤器链
使用FilterChain实现Java中的过滤器链