首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >变长参数可以代替单维数组吗?

变长参数可以代替单维数组吗?
EN

Stack Overflow用户
提问于 2013-10-05 17:24:00
回答 3查看 87关注 0票数 2

案例1:

代码语言:javascript
复制
Class Test{
    public static void m1(int[] x){
        /* some code here */
    }
}

案例2 :

代码语言:javascript
复制
Class Test{
    public static void m1(int... x){
        /* some code here */
    }
}

现在告诉我案例2是否适用?如果是,请从编译器的角度解释我。另一个问题:单维数组可以替代单变量长度参数吗?

EN

回答 3

Stack Overflow用户

发布于 2013-10-05 17:32:53

在第2种情况下,编译器为您编写数组代码。您可以阅读文章,了解添加可变长度参数时发生的情况。

当您需要传递一个或多个参数时,不鼓励将varargs作为单个参数使用,除非确实需要这样做,因为这种方法容易出错,而且很难看。

票数 0
EN

Stack Overflow用户

发布于 2013-10-05 17:47:26

您可以使用varargs,而不是创建数组,然后将数组作为参数传递给函数。尽管,如果您想将多个数组传递给您的参数并单独操作它们(),那么您可能不应该使用varargs

作为对您问题的回答,这两种情况都适用于。在您的函数中,arrayvarargs都将得到相同的处理。这真的取决于你选择哪一个最适合你的情况。

票数 0
EN

Stack Overflow用户

发布于 2013-10-05 17:53:32

从编译器的角度来看:

  • case1: x的长度在运行时是已知的。x在堆中的某个位置,当调用m1时,对x的引用将放在堆栈中。
  • case2:编译时就知道x的长度,因为源代码明确列出了所有int参数。当调用m1时,每个int都放在堆栈上。

实际上还有另外一个案子。您可以使用m1调用case2m1(new int[] {3,4,5});,这将导致堆栈处理,如case1中所示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19200568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档