Java中的可变参数

  在学习Java的过程中,我发现了Java有一种方法可以传递数量可变的参数列表,于是就仔细的去了解一下关于可变参数的相关知识。下面我将对可变参数做出我的理解。
  首先说一下定义可变参数的方法:
  只要在形参的数据类型与参数名之间加上三个“.”,就可以让他和个数不确定的实参想匹配。不过有一点需要注意,每个方法只能有一个这样的参数个数可变的形参,且这个形参必须是形参列表的最后一个,所以除了定义的可变参数的数据类型以外的形参都要写在可变参数之前。例如:
在这里插入图片描述
上面所说的不确定也包括0,所以不给可变参数传递实参也是可以的,注意这时传递的是一个空数组(int[]{})而不是null。
  传递的方式:
  其实在实参传递过来的过程中,编译器会把最后一个可变参数的形参转化为数组形参,所以相当于是获取了一个数组形参,那么我们就需要用遍历的方法去获取里面的每一个实参。例如:
在这里插入图片描述
  可变参数可以用于方法的重载,但是不能与相同数据类型的形参数组作为同个方法的重载判断依据,因为可变参数在编译器编译后也会变成一个形参数组所以会引起它们的相互冲突。例如:
在这里插入图片描述
  方法的重载还可能出现这种情况:当调用方法时传入一个参数,有一个可变参数的方法和一个单个参数的方法都能与之匹配,那么他会执行固定个数的那个方法。如果有实参个数固定的与之匹配,那么它的优先级要可变参数的优先级。如图:
在这里插入图片描述
  那么可变参数是否可以用形参数组的方式传递实参呢?答案是肯定的,因为他通过编译后传过去就是一个实参数组,所以完全可以直接在传参的时候传递一个实参数组过去。换过来,参数数组是不能用可变参数的方式来传参的。如图:
在这里插入图片描述
  还可以在可变参数中应用泛型。如图:
在这里插入图片描述

  • 24
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值