当前位置: 首页 > news >正文

表达式和语句的区别

一 概述

在 Java 和 Kotlin 中,
​表达式(Expression)​ 是代码中能够计算并返回一个值的语法单元。
表达式和语句(Statement)的核心区别在于:​表达式有返回值,而语句仅执行操作

二 kotlin 表达式

Kotlin 中几乎所有控制结构都是表达式,即它们会返回一个值。
函数体可以是一个表达式(单表达式函数),进一步简化代码。

三 引用

在 Java 和 Kotlin 中,表达式(Expression) 是代码中能够计算并返回一个值的语法单元。表达式和语句(Statement)的核心区别在于:表达式有返回值,而语句仅执行操作。以下是两种语言中表达式的定义、示例及对比:


一、Java 中的表达式

1. 定义

• 表达式是通过计算得到一个值的代码片段,可以是变量、常量、运算符组合、方法调用等。
• Java 中大部分表达式是有副作用的(如赋值、方法调用),但核心在于它们会返回一个值。

2. 常见表达式示例
类型示例返回值
算术表达式a + bint/double
逻辑表达式a > b && c != 0boolean
方法调用Math.max(a, b)方法返回值
赋值表达式a = 5被赋的值(如 5
三元运算符a > 0 ? "正" : "非正"String
3. 非表达式的语句

控制语句ifforwhile(不返回值)。
声明语句int a = 10;(声明并赋值,整体是语句)。

4. Java 表达式的局限性

大多数控制结构是语句,无法直接作为值使用。

// 错误!Java 的 if 是语句,不能赋值给变量
String result = if (a > 0) "正" else "非正";

二、Kotlin 中的表达式

1. 定义

• Kotlin 中几乎所有控制结构都是表达式,即它们会返回一个值。
• 函数体可以是一个表达式(单表达式函数),进一步简化代码。

2. 常见表达式示例
类型示例返回值
控制结构if (a > 0) "正" else "非正"String
when 表达式when (x) { 1 -> "一" ... }匹配分支的值
Lambda 表达式{ x: Int -> x * 2 }函数类型值
函数返回值fun sum(a: Int, b: Int) = a + bInt
3. 非表达式的语句

循环语句forwhile(不返回值,但可通过副作用操作)。
返回语句return(在函数中返回,但本身不返回值)。

4. Kotlin 表达式的优势

代码简洁:用表达式替代冗余的语句结构。

val result = if (a > 0) "正" else "非正"

函数式编程支持:Lambda 和集合操作链式调用。

val evenSquares = listOf(1, 2, 3).filter { it % 2 == 0 }.map { it * it }

三、表达式 vs 语句的核心区别

特性表达式(Expression)语句(Statement)
返回值有返回值(如 5true无返回值(仅执行操作)
可组合性可作为其他表达式或函数的参数只能独立执行,不能嵌套
典型结构a + bif-else(Kotlin)forwhilereturn

四、语言设计对比

特性JavaKotlin
控制结构大部分是语句(如 if全部是表达式(如 if 返回值)
函数返回值必须显式 return单表达式函数可省略 return
代码风格面向语句面向表达式(更函数式)

五、总结

Java
表达式主要用于计算值,但控制结构是语句,需通过返回值或副作用操作结果。
Kotlin
表达式是语言核心,控制结构(如 ifwhen)和函数设计更灵活,可直接返回值,支持链式调用和简洁语法。

核心思想
表达式是值语句是动作
• Kotlin 的表达式特性使其代码更简洁、更函数式,而 Java 需要更多样板代码。

相关文章:

  • 86.HarmonyOS NEXT 组件通信与状态共享:构建高效的组件协作机制
  • 206. 反转链表
  • 施磊老师c++(七)
  • 【人工智能基础2】Tramsformer架构、自然语言处理基础、计算机视觉总结
  • DeepSeek进阶应用(二):结合Kimi制作PPT(双AI协作教程)
  • ASP.NET Webform和ASP.NET MVC 后台开发 大概80%常用技术
  • 过滤空格(信息学奥赛一本通-2047)
  • 我的世界1.20.1forge模组进阶开发教程生物篇(1)——生成
  • 上位机数据可视化:使用QtCharts绘制波形图
  • STM32 - 在机器人领域,LL库相比HAL优势明显
  • 电磁兼容性|电子设备(EMC)测试与系统化整改
  • HarmonyOS NEXT个人开发经验总结
  • 爬虫获取 item_get_video 接口数据:小红书笔记视频详情的深度解析
  • 鸿蒙 @ohos.arkui.drawableDescriptor (DrawableDescriptor)
  • 为训练大模型而努力-分享2W多张卡通头像的图片
  • Symbian(塞班)操作系统
  • python+MySQL+HTML实现自习室座位管理系统
  • 大模型微调01-使用transforms进行lora微调
  • 关于离子滤波小记
  • 34个适合机械工程及自动化专业【论文选题】
  • 典型的企业网站/合肥网站制作公司
  • seo需求/新野seo公司
  • 政府网站建设的目的和意义是什么/事件营销
  • 世界杯日本韩国出线/seo页面内容优化
  • 政府网站监管怎么做/seo深圳优化
  • 北京性价比网站建设/58和百度哪个推广效果好