我有一个Double[] foo,我需要转换数组中的每个元素:
我试过了
for (Double p : foo){
p = p * m + o;
}
Run Code Online (Sandbox Code Playgroud)
在哪里m和o是缩放因子.我也试过了
for (Double p : foo){
p *= m;
p += o;
}
Run Code Online (Sandbox Code Playgroud)
但这些都不起作用.我究竟做错了什么?我认为所有非原语都是Java中的引用.
Java的自动装箱和拆箱在这里受到影响.基本上p是装箱于原语之前的算术运算然后autoboxed到包装类型之后.这样做的结果是获取了值副本,因此修改对原始容器元素没有影响.
您需要以正常方式重新编码循环
for (int i = 0; i < foo.length; ++i){
foo[i] = foo[i] * m + o;
}
Run Code Online (Sandbox Code Playgroud)