前言:这个问题已经在这里被问过,但我特别想知道作者具体的意思。
我正在阅读《Java编程思想》第三版修订版4.0中的第4章“初始化和清理”部分,Eckel在其中展示了以下代码段:
我正在阅读《Java编程思想》第三版修订版4.0中的第4章“初始化和清理”部分,Eckel在其中展示了以下代码段:
public class ArrayInit
{
public static void main(String[] args)
{
Integer[] a =
{
new Integer(1),
new Integer(2),
new Integer(3),
};
Integer[] b = new Integer[]
{
new Integer(1),
new Integer(2),
new Integer(3),
};
}
}
并表示如下:
第一种形式有时很有用,但它更受限,因为数组的大小在编译时确定。
第二种形式提供了一种方便的语法,用于创建和调用可以产生与C语言中的可变参数列表(称为“varargs”)相同效果的方法。这些方法可以包括未知数量的参数以及未知类型。
在我看来,我从未听说过Eckel所描述的两者有所不同。据我理解,它们都是静态大小的数组。我不明白第一种方式比第二种方式更加“有限”的原因在哪里。
他在说什么?
Integer[] nums = new Integer[n];
这样的表达式,其中n
是运行时表达式?我无法理解“C语言的可变参数列表”是什么意思,因为Java也支持这个功能,只不过更方便和安全(并且与此无关,以我个人看来)。 - 5gon12eder