开发者社区> 问答> 正文

Java 传递是引用还是按值传递?

Java Spec 说Java 中的一切都是逐个值传递的。Java中没有"逐个引用"的东西。这些术语与方法调用和传递变量作为方法参数相关联。嗯,基元类型总是通过值传递,没有任何混淆。但是,概念应该从复杂类型的方法参数中理解。

在 java 中,当我们将复杂类型的引用传递给任何方法参数时,始终将内存地址逐位复制到新的引用变量。 pass-by-value

在上面的示例中,第一个实例的地址位被复制到另一个引用变量,从而生成对指向存储实际对象的单个内存位置的引用。请记住,对 null 进行另一个引用不会使第一个引用也为空。但是,从任一引用变量更改状态对其他引用也有影响。

展开
收起
YDYK 2020-04-25 20:59:25 862 0
1 条回答
写回答
取消 提交回答
  • Java Spec 说Java 中的一切都是逐个值传递的。Java中没有"逐个引用"的东西。这些术语与方法调用和传递变量作为方法参数相关联。嗯,基元类型总是通过值传递,没有任何混淆。但是,概念应该从复杂类型的方法参数中理解。

    在 java 中,当我们将复杂类型的引用传递给任何方法参数时,始终将内存地址逐位复制到新的引用变量。参见下图:

    pass-by-value

    在上面的示例中,第一个实例的地址位被复制到另一个引用变量,从而生成对指向存储实际对象的单个内存位置的引用。请记住,对 null 进行另一个引用不会使第一个引用也为空。但是,从任一引用变量更改状态对其他引用也有影响。

    2020-04-25 20:59:37
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载