java - ‘value semantics’ 和 ‘pointer semantics’ 是什么意思?

标签 java c++ terminology semantics

什么是“值语义”,什么是“隐式指针语义”?

最佳答案

Java 对对象类型使用隐式指针语义,对基元使用值语义。

值语义意味着您直接处理值并传递拷贝。 这里的重点是,当您拥有值(value)时,您可以相信它不会在您背后改变。

使用指针语义,您没有值,只有“地址”。 其他人可以改变那里的东西,你不知道。

C++ 中的指针语义:

void foo(Bar * b) ...
... b->bar() ...

你需要一个 * 来请求指针语义和 -> 调用指针上的方法。

Java 中的隐式指针语义:

void foo(Bar b) ...
... b.bar() ...

由于您无法选择使用值语义,因此不需要 * 也不需要区分 -> 和 .,因此是隐含的。

关于java - ‘value semantics’ 和 ‘pointer semantics’ 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/166033/

相关文章:

terminology - 回归测试与非回归测试

programming-languages - x>y && z==5 - 这个表达式的部分是如何调用的?

terminology - 继续运动期限

java - Spring Boot Configuration 在多个@Profile 上跳过注册

c++ - 用于服务网络连接的英特尔 TBB 任务 - 好的模型?

c++ - 如何在 C++ 中找到二维数组的大小

c++ - 使用 msi 安装程序安装 Windows 服务

java - MailSender Spring

java - 如何在 Java 中将 CamelCase 转换为人类可读的名称?

java - 如何从 logback 中的 Java 堆栈跟踪中删除换行符?