蓮说Java | Java中的“.”操作符与“->”操作符在使用上与C语言中的有何区别?

在C语言和Java中,` . ` 操作符和 ` -> ` 操作符都用于访问对象的成员(属性或方法),但它们的使用场景和语法有所不同。

在C语言中,

• ` . `操作符用于访问结构体(struct)或联合体(union)的成员。

• 语法:` 对象名 . 成员名 `。

• 例如,如果有一个结构体 ` Person ` 和一个 ` Person ` 类型的变量 ` p `,访问` p `的` name `成员可以写作`p.name`。

而 ` -> ` 操作符用于通过指针访问结构体或联合体的成员。

• 语法:` 指针变量 -> 成员名 `。

• 例如,如果有一个指向` Person `类型结构体的指针 ` pPtr `,访问指向的`Person`的`name`成员可以写作`pPtr->name`。

在Java中,

• ` . ` 操作符用于访问对象的属性或方法。

• 语法:` 对象名 . 属性 / 方法名 `。

• 例如,如果有一个 ` Person ` 类和一个 ` Person ` 类型的对象 ` p ` ,访问 ` p ` 的 ` name ` 属性可以写作 ` p.name ` ,调用 ` p ` 的 ` speak() ` 方法可以写作 ` p.speak() ` 。


而Java中的 ` -> ` 操作符实际上是Lambda表达式的一部分,用于引用方法。

• 语法:` (参数) -> { 表达式体 } `或 ` ( 参数) -> 语句 `。

• 例如,可以这样使用 ` -> ` 来定义一个Lambda表达式: ` (String s) -> s.length() ` ,这里`->`左边是参数列表,右边是Lambda体。

区别

• 语言环境:`.`操作符在C和Java中都用于访问成员,但`->`操作符只在C中用于通过指针访问成员,在Java中用于Lambda表达式。

• 用途:在C中,`.`和`->`都用于访问结构体或联合体成员,但在Java中,`.`用于访问对象的属性和方法,而`->`用于定义Lambda表达式。

• 语法:在C中,`.`和`->`的左边分别是对象名和指针变量,而在Java中,`.`的左边是对象名,`->`的左边是参数列表。

• 语义:在C中,`.`和`->`都直接与内存中的对象或结构体关联,而在Java中,`.`与对象关联,`->`与方法引用或Lambda表达式关联。

总的来说,`.`和`->`在C和Java中的使用和含义有显著差异,这反映了两种语言在语法和语义上的根本区别。

相关推荐
代码山河5 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
在世修行5 小时前
智学文枢:题目流水线
python·多线程·状态机·pyside
学长毕设5 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端
听风说ml5 小时前
socket编程 【C语言】
c语言·udp·tcp·socket编程
梯度下降者5 小时前
零基础入门Python 爬虫
爬虫·python·数据分析·入门指南·webcrawler
zzu123zsw6 小时前
从臃肿的模板调用到声明式契约:深入 UniHttp 动态代理与多渠道生命周期扩展
java·spring boot·microsoft·unihttp
学逆向的6 小时前
C 局部静态变量
c语言·开发语言·网络安全
“AI国潮设计-小江”7 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
源码集结号7 小时前
云诊所门诊系统源码,基于SpringBoot+Vue.js架构,支持多租户设计与Docker容器化部署
java·spring boot·源码·医院信息系统·门诊系统·诊所系统
论文复现现场7 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算