这两个Java数组是否相同?

时间:2011-12-17 12:05:54

标签: java arrays

这两个阵列的形式是否相同? (他们似乎在接受测试时。)如果是,那为什么他们都被允许?一个纯粹是为了向后兼容吗?哪种是最佳做法?

public static void main(String[] args)
{
    Auto[] array0 = new Auto[] { new Auto(6, "Lemons"),
                                 new Auto(4, "Rusty")
                               };

    Auto[] array1 = { new Auto(5, "German"),
                      new Auto(8, "Detroit") 
                    };
}

2 个答案:

答案 0 :(得分:3)

后者只能用于在声明数组时初始化数组。

例如,假设您有以下方法:

public void foo(Auto[] autos) {
}

在这种情况下,您可以foo( new Auto[] { new Auto(6, "Lemons") }),但 foo( { new Auto(6, "Lemons") })

答案 1 :(得分:1)

它们是等价的。

但是,第二种语法只能在初始化变量时使用(编译器可以推断出类型)。因此,第一种语法对于您想要创建临时的情况很有用,例如:

void foo(Auto[] stuff) {
    ...
}


foo(new Auto[] { new Auto(6, "Lemons"), new Auto(4, "Rusty") });