将数组传递给Java函数

5
当编写一个接受数组作为参数的Java函数时,函数定义应该将方括号(“[]”)放在类型或变量名上?
就像这样:
private int myFunction(int array[])
{
    //do stuff here
}

或者...

private int myFunction(int[] array)
{
    //do stuff here
}

他们两个都“可行”,但它们之间是否存在技术上的差异?

你还可以使用private int myFunction(int... array) - Peter Lawrey
4个回答

15

没有区别。但是int[] array被认为是惯用的Java写法。

逻辑是[]是类型的一部分(数组是与标量不同的独立类型),因此int[]应该放在一起。这也与例如返回类型的表示法一致:

int[] foo() {
    ...
    int[] x = new int[5];
    return x;
}

据我所知,int foo()[]{}也是有效的,因此两者都与返回类型一致。 - josefx
1
@josefx:这可能是真的。但如果我在真实的代码中看到有人写int foo()[],我就得打他们屁股了。 - Oliver Charlesworth

2

当只有一个变量时,这并没有太大的影响,但当它用于定义多个变量时,情况就不同了。

int[] array1, array2;

将定义两个数组。

int array1[], i;

将定义一个数组和一个变量。


2
我认为 int array1[], i; 是丑陋的,因为它声明了两种不同类型的变量。 - cHao

1

这两者之间没有技术上的区别。我从未见过任何风格指南规定或偏好你第一个示例中的风格。我也从未见过使用你第一个示例中的风格的开源Java代码。它总是int[] array


0

int[] 数组 对我来说更有意义,因为 int[] 是类型,数组 是名称。将它们分开并标准化更有意义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接