You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用函数是否会更新数组?Java数组传参后打印值疑问

数组参数传递后的修改效果解答

答案很明确——会打印2,调用arrayManipulate函数后原数组会被更新,完全不需要返回数组重新赋值。

为啥会这样?得从Java的参数传递机制说起:

  • Java里数组属于引用类型,当你把数组作为参数传给方法时,传递的是数组对象引用的副本,但这个副本和原引用指向的是同一个内存中的数组对象。
  • 你在arrayManipulate方法里写的arr[0] = 2,是直接操作这个共享数组对象的元素,而不是改变参数引用本身。这种修改会直接反映到原数组上,因为它们指向的是同一个东西。

举个简单的类比:就像你和朋友各拿了一把能打开同一个柜子的钥匙,你用钥匙打开柜子把里面的东西换掉了,朋友再打开柜子看到的就是换后的东西——这里的钥匙就是引用,柜子就是数组对象。

补充个容易混淆的点:如果在方法里给参数arr重新赋值(比如写arr = new Someclass[5]),那这时候参数的引用就指向了新的数组对象,和原数组没关系了,这种情况才不会影响原数组。但你的代码里只是修改数组元素,所以完全生效。

内容的提问来源于stack exchange,提问作者user9770489

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:53:00