A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© waylent 中级黑马   /  2014-10-12 00:10  /  1626 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class VarargsDemo{
  2.         public static void main(String[] args) {
  3.                 printMany1();//也可以不传入参数
  4.                 printMany1(1);
  5.                 printMany1(2,3);
  6.                 printMany1(4,5,6);
  7.         }
  8.         public static void printMany1(int... varargs){
  9.                 for (int i=0;i<varargs.length;i++ ) {
  10.                         System.out.print(varargs[i]+" ");
  11.                 }
  12.                 System.out.println();
  13.         }
  14. }
复制代码

虽然学了,但是不知道什么时候用?

8 个回复

倒序浏览
本帖最后由 HM2014nuli 于 2014-10-12 08:12 编辑

楼主你好,你拿数组做下比较就知道,可变参数的好处了,其实可变参数最大的好处就是不用像数组那样当参数个数不一样时,又需要自己再去new一个数组出来,这样是比较耗资源的(虽然不多,积少成多),而且代码臃肿,用可变参数却可以解决这些问题,你可以传1个,3个,10个,或者不传都可以(但数组做不到这一点,你指定几个,就只能传几个,写的比较死)
这样解释可能有点不是很妥当,但你只要记住他们参数的差别,一个是固定的个数,一个是可变的个数
回复 使用道具 举报
学习的路过,表示没看懂
回复 使用道具 举报
按照我的理解,可变参数是把数组的封装和应用打包了。用数组在普通里的代码就是你必须要先创建数组,然后才能调用你的那个函数,而可变参数就直接把内容直接传给函数;二在项目里,我们得到的数据一般都是输入的,这是如果用数组,那么就需要先定义一个函数来就收数据封装成数组,然后才能传给那个函数,而用可变参数的话,就可以直接接收了。
回复 使用道具 举报 1 0
new一个新数组会耗费内存的
回复 使用道具 举报
语法糖,方便代码书写。可变参数底层就是Object[]
回复 使用道具 举报
从名字你就应该发现好处
回复 使用道具 举报
就像面向接口编程。你这样写UserServiceImp u = new UserServiceImp();肯定没错。但是你如果这样写UserService u = new UserServiceImp();不是更好吗
回复 使用道具 举报
可变参数其实只是方便了使用,在JVM中还是把他变成数组进行处理的,上面的有些回答说用数组会耗费资源其实不大正确。
在使用时当参数的类型一致但个数不固定时用可变参数,凡是能用可变参数的地方都能用数组。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马