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

关于Java数组索引的疑问:多项式加法代码为何可行?

关于Polynomial类add方法数组索引操作的解惑

你的核心疑惑其实是两个点:数组元素是否设置后就不可变,以及为何两个if条件满足时能实现累加,下面直接拆解清楚:

  1. int数组的默认初始化值
    Java中新建int[]类型数组时,所有元素会被自动初始化为0。所以代码里int[] newPoly = new int[max];执行后,newPoly的每一个索引位置的初始值都是0,并非未定义状态。

  2. +=操作的本质
    代码里的newPoly[i] += coefficients[i];等价于newPoly[i] = newPoly[i] + coefficients[i];:

    • 当第一个if条件满足时,newPoly[i]初始是0,加上当前多项式的系数coefficients[i]后,就变成了该系数的值;
    • 如果第二个if条件也满足(即当前索引i同时在两个多项式的数组范围内),此时newPoly[i]已经有了第一个多项式的系数值,再执行newPoly[i] += other.coefficients[i];,就是把两个多项式对应位置的系数做累加,完全符合多项式加法的逻辑。
  3. 数组元素的可变性
    int数组的元素是完全可变的,只要通过索引访问到元素,就可以随时修改它的值——不存在“设置后就不可变”的限制,除非你使用了不可变的包装类或特殊数据结构,但这里是基本类型int的数组,完全支持修改操作。

附上标注关键逻辑的代码:

public Polynomial add(Polynomial other){
  int max = Math.max(coefficients.length, other.coefficients.length);
  int[] newPoly = new int[max]; // 所有元素默认初始化为0
  for (int i=0; i<max; i++){
    if (i<coefficients.length){
      newPoly[i] += coefficients[i]; // 0 + 当前多项式系数
    }   
    if (i<other.coefficients.length){
      newPoly[i] += other.coefficients[i]; // 已有值 + 另一个多项式系数
    }   
  }
  return new Polynomial(newPoly);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 19:03:13