值类型 – HikariLan's Blog https://blog.hikarilan.life 贺兰星辰的个人博客 Thu, 12 Mar 2026 07:28:49 +0000 zh-Hans hourly 1 https://wordpress.org/?v=7.1 Java 方法实参是传值(pass-by-value)还是传引用(pass-by-reference)? https://blog.hikarilan.life/tech/424/java-%e6%96%b9%e6%b3%95%e5%ae%9e%e5%8f%82%e6%98%af%e4%bc%a0%e5%80%bcpass-by-value%e8%bf%98%e6%98%af%e4%bc%a0%e5%bc%95%e7%94%a8pass-by-reference%ef%bc%9f/ https://blog.hikarilan.life/tech/424/java-%e6%96%b9%e6%b3%95%e5%ae%9e%e5%8f%82%e6%98%af%e4%bc%a0%e5%80%bcpass-by-value%e8%bf%98%e6%98%af%e4%bc%a0%e5%bc%95%e7%94%a8pass-by-reference%ef%bc%9f/#respond Sat, 05 Mar 2022 10:56:29 +0000 https://my.minecraft.kim/?p=424 一直以来,我认为在 Java 中传递方法实参时,当传入的类型为基本数据类型时,则传入的是值;当传入的类型为对象时,则传入的是引用。但是,这个观念是实际上是错误的。事实上,Java 始终传递值。 为什么这么说呢,让我们看一下如下代码: 相信大家都很容易理解这段代码,因为整型变量 x 传入 myMethod 时传入了值,而不是引用,因此即使我们设置 x 的值,也不会导致方法外的 y 有任何改变。 通常来说,我们认为 Java 对对象传递引用的原因是当我们在方法内修改一个对象内部的状态时,(与 C++ 直接传递对象类型时不同,)这个对象的值的改变会传递到外部,就像这样: 但是,如果我们尝试像开头的代码一样,试图直接修改对象类型实参,这些修改会生效吗?

来源

]]>
https://blog.hikarilan.life/tech/424/java-%e6%96%b9%e6%b3%95%e5%ae%9e%e5%8f%82%e6%98%af%e4%bc%a0%e5%80%bcpass-by-value%e8%bf%98%e6%98%af%e4%bc%a0%e5%bc%95%e7%94%a8pass-by-reference%ef%bc%9f/feed/ 0