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

为何修改var10000会同步改变原bias/weights数组?是Java特性吗?

数组赋值后修改元素同步影响原数组的原因

这事儿核心原因是Java里数组属于引用类型,不是像int、double那种基本值类型。

当你执行double[] var10000 = this.bias[layer];的时候,并没有把this.bias[layer]这个数组整个复制一份给var10000,而是让var10000这个变量和this.bias[layer]指向了内存里的同一块数组空间——说白了,俩变量其实是“共用”同一个数组对象。

所以你修改var10000[neuron]的时候,本质上就是直接在修改原数组this.bias[layer]里的元素,毕竟它们指向的是同一个东西。代码里后面给var10000赋值this.weights[layer][neuron]后也是一个道理,修改var10000的元素就是修改原weights数组的对应内容。

另外这可不是Java独有的特性,像Python、C#、JavaScript这些语言里,数组、对象这类引用类型都有这个特点。只有基本值类型(比如Java的int、double,Python的int、float)赋值时才会复制一份值,修改新变量不会影响原变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 10:48:18