《Java语言导学(原书第6版)》一3.3 表达式、语句和块

简介: 本节书摘来华章计算机《Java语言导学(原书第6版)》一书中的第3章 ,第3.3节,[美] 雷蒙德·盖拉多(Raymond Gallardo), 斯科特·霍梅尔(Scott Hommel), 索亚·坎南(Sowmya Kannan), 琼尼·戈登(Joni Gordon), 沙伦·比奥卡·扎卡沃(Sharon Biocca Zakhour) 著 董笑菊 薛建新 吴 帆 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.3 表达式、语句和块

掌握变量和运算符后,我们学习表达式、语句和块(代码块)等要素。运算符用于构建表达式,进行运算。表达式是语句的核心组件,语句归在一起形成块。

3.3.1 表达式

表达式是由变量、运算符和方法调用(根据语法构建)等组成的构造,且表达式的计算结果为单个值。下面例子中黑体部分为表达式:
image

表达式的返回值类型取决于表达式中的元素。表达式cadence=0返回值的类型为int。因为赋值运算符返回值的数据类型与左边运算对象的数据类型一样,在这个例子中,cadence的数据类型为int。如其他表达式所示,表达式也能返回其他类型的值,如boolean、String。
Java程序语言支持用表达式构建复合表达式,前提是表达式一部分所需的数据类型与另一部分的数据类型相匹配。复合表达式例子如下:
image

这个例子中,表达式的计算顺序不重要,因为乘法运算的结果与计算顺序无关。也就是说,不管被乘数的顺序如何,输出结果都一样。但这对所有的表达式并不成立。例如,下述表达式会根据执行加法和除法运算的不同顺序,给出不同结果:
image

为避免这种二义性,可以使用配对圆括号()指定表达式的计算顺序。例如,为了保证上述表达式不存在二义性,可以改写成:
image

如果不显式指定操作的执行次序,那么执行次序就由表达式内运算符的优先级确定。优先级较高的运算符先计算。例如,除法的优先级比加法要高,因此下述两个表达式是等价的:
image

构建复合表达式时,用圆括号显式指出先要计算的运算符,这有助于阅读和维护代码。

3.3.2 语句

语句大致相当于自然语言中的句子。语句构成了完整的执行单元。下面几种表达式加上分号(;)就组成了语句:

  • 赋值表达式
  • 递增或递减表达式
  • 方法调用
  • 对象创建表达式

这些语句都叫表达式语句。如下所示为表达式语句的实例:
image

除了表达式语句外,还有两种语句:声明语句和控制流语句。声明语句用于声明变量,前面已经给出了一些声明语句的例子:
image

控制流语句用于控制语句执行的次序,将在3.4节介绍。

3.3.3 块

块(代码块)是一对花括号之间的一组语句(由0条或多条语句构成),它可以用在任何单条语句允许执行的位置。下述例子BlockDemo演示了块的使用方法:
image

3.3.4 问题和练习:表达式、语句和块

问题

  1. 运算符用于构建    进行运算。
  2. 表达式是    的核心组件。
  3. 语句归在一起形成    
  4. 代码1 2 3是    表达式的例子。
  5. 语句大致相当于自然语言中的句子,只是语句要用    结尾,而不是句号。
  6. 块(代码块)是一对    之间的一组语句(由0条或多条语句构成),它可以用在任何单条语句允许执行的位置。
    练习

区分下述表达式语句是什么语句:
image

答案
相关答案参考
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/QandE/answers_expressions.html

相关文章
|
7月前
|
JSON Java API
【干货满满】分享京东API接口到手价,用Java语言实现
本示例使用 Java 调用京东开放平台商品价格及优惠信息 API,通过商品详情和促销接口获取到手价(含优惠券、满减等),包含签名生成、HTTP 请求及响应解析逻辑,适用于比价工具、电商系统集成等场景。
|
7月前
|
安全 Java API
Java中的Lambda表达式:简洁与功能的结合
Java中的Lambda表达式:简洁与功能的结合
509 211
|
7月前
|
安全 Java
Java中的Switch表达式:更简洁的多路分支
Java中的Switch表达式:更简洁的多路分支
575 211
|
7月前
|
Java 编译器
Java 17 Switch表达式:更简洁、更强大的流程控制
Java 17 Switch表达式:更简洁、更强大的流程控制
807 111
|
5月前
|
Java
Java语言实现字母大小写转换的方法
Java提供了多种灵活的方法来处理字符串中的字母大小写转换。根据具体需求,可以选择适合的方法来实现。在大多数情况下,使用 String类或 Character类的方法已经足够。但是,在需要更复杂的逻辑或处理非常规字符集时,可以通过字符流或手动遍历字符串来实现更精细的控制。
382 18
|
5月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
215 4
|
6月前
|
存储 Java Apache
Java语言操作INI配置文件策略
以上步骤展示了基本策略,在实际项目中可能需要根据具体需求进行调整优化。例如,在多线程环境中操作同一份配置时需要考虑线程安全问题;大型项目可能还需考虑性能问题等等。
272 15
|
7月前
|
Java 编译器 API
Java Lambda表达式与函数式编程入门
Lambda表达式是Java 8引入的重要特性,简化了函数式编程的实现方式。它通过简洁的语法替代传统的匿名内部类,使代码更清晰、易读。本文深入讲解Lambda表达式的基本语法、函数式接口、方法引用等核心概念,并结合集合操作、线程处理、事件回调等实战案例,帮助开发者掌握现代Java编程技巧。同时,还解析了面试中高频出现的相关问题,助你深入理解其原理与应用场景。
|
8月前
|
自然语言处理 Java Apache
在Java中将String字符串转换为算术表达式并计算
具体的实现逻辑需要填写在 `Tokenizer`和 `ExpressionParser`类中,这里只提供了大概的框架。在实际实现时 `Tokenizer`应该提供分词逻辑,把输入的字符串转换成Token序列。而 `ExpressionParser`应当通过递归下降的方式依次解析
428 14