数组会在Java中通过引用返回吗?

时间:2013-11-14 18:52:07

标签: java arrays pass-by-reference

found transform JAI库中public void transform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts) { if ( srcPts == null ) { throw new IllegalArgumentException(JaiI18N.getString("Generic0")); } if (dstPts == null) { dstPts = new double[numPts * 2 + dstOff]; } while (numPts-- > 0) { double x = srcPts[srcOff++]; double y = srcPts[srcOff++]; double w = m20 * x + m21 * y + m22; if (w == 0) { dstPts[dstOff++] = x; dstPts[dstOff++] = y; } else { dstPts[dstOff++] = (m00 * x + m01 * y + m02) / w; dstPts[dstOff++] = (m10 * x + m11 * y + m12) / w; } } } dstPts方法中的以下代码:

null

如果{{1}}是{{1}},则会创建新数组。但是这个阵列不会回到外面,不是吗?

3 个答案:

答案 0 :(得分:3)

请注意:Java总是按值传递。底部的小线是当您将对象作为参数传递时,它的引用是实际传递的值。

例如,C#具有ref关键字,允许传递引用。在Java中,您必须将对象包装在一个容器中并使用容器,这样您就可以自由地切换底层元素。

正如您所说,除非返回新数组,否则无法从外部访问新数组。我知道这样做是为了防止以下while抛出NPE,但是当方法实际编码时,处理结果会丢失。

答案 1 :(得分:2)

你是对的,如果这是实际的代码。我想人们在使用该方法时并没有将空值作为参数传递,但即便如此,这也是一个错误。

答案 2 :(得分:0)

数组是对象,它们的引用按值传递。