Java中可变参数方法

你的名字 2022-05-31 09:22 306阅读 0赞

Java中可变参数方法

J2SE 1.5中提供了Varargs机制,允许直接定义能和多个实参相匹配的形参。从而,可以用一种更简单的方式,来传递个数可变的实参。

Varargs的含义

大体说来,“Varargs”是“variable number of arguments”的意思。有时候也被简单的称为“variable arguments”,不过因为这一种叫法没有说明是什么东西可变,所以意义稍微有点模糊。

  1. public class Demo {
  2. //求若干个整型数中的最大值
  3. public int getMax(int... items){ //定义可变参数items
  4. int max = Integer.MIN_VALUE; //次数为int能表示的最小值,值为-2147483648
  5. for(int item : items){
  6. max = item > max? item : max; //取大值
  7. }
  8. return max;
  9. }
  10. //返回比number大的数的个数
  11. public int getLagerNum(int number,int... items){ //若除了可变长参数还有其它参数,可变长参数一定要放在最后
  12. int sum = 0;
  13. for(int item : items){
  14. if(item > number){
  15. sum++;
  16. }
  17. }
  18. return sum;
  19. }
  20. public static void main(String[] args) {
  21. Demo vp = new Demo();
  22. System.out.println("最大值:"+vp.getMax()); //可以不写参数
  23. System.out.println("最大值:"+vp.getMax(2,1,4,7,2,-1,3,3)); //可以在参数中直接写入若干个参数
  24. System.out.println("最大值:"+vp.getMax(-1,4,5,0,1)); //可以在参数中直接写入若干个参数
  25. System.out.println("比number大的数的个数:"+vp.getLagerNum(9, 1,11,5,14,-1,9,21)); //9为number,后边的是items
  26. int a[] = new int[] {
  27. 1,11,5,14,-1,9,21};
  28. System.out.println("比number大的数的个数:"+vp.getLagerNum(9,a)); //items也可以用数组替代
  29. }
  30. }
  31. /* 最大值:-2147483648 最大值:7 最大值:5 比number大的数的个数:3 比number大的数的个数:3 */
  1. 在方法中定义可变参数后,我们可以像操作数组一样操作该参数;
  2. 如果该方法除了可变参数还有其它的参数,可变参数必须放到最后;
  3. 调用使用了可变参数的方法时:
    a. 可以不写参数,即传入空参;
    b. 可以直接在里边写入参数,参数间用逗号隔开;
    c. 可以传入一个数组;

    public class Demo {

    1. public void comp(int... items){
    2. System.out.println("1");
    3. }
    4. public void comp(int item1,int item2){
    5. System.out.println("2");
    6. }
    7. public static void main(String[] args) {
    8. Demo vp = new Demo();
    9. vp.comp(1, 2);
    10. }

    }
    / 2 /

由此可以看出:

4.拥有可变参数的方法可以被重载,在被调用时,如果能匹配到参数定长的方法则优先调用参数定长的方法。

  1. public class Demo {
  2. public void comp(int... items){
  3. System.out.println("1");
  4. }
  5. public void comp(int[] items){ //会报错:Duplicate method comp(int[]) in type VariableParameter
  6. System.out.println("2");
  7. }
  8. public static void main(String[] args) {
  9. }
  10. }

当试图使用数组作为参数去实现重载时,会报错,说明可变参数与数组冲突,但是:

  1. public class Demo {
  2. public void comp(int[] items){ //会报错:Duplicate method comp(int[]) in type VariableParameter
  3. System.out.println("2");
  4. }
  5. public static void main(String[] args) {
  6. Demo vp = new Demo();
  7. vp.comp(1,2,3,4); //The method comp(int[]) in the type VariableParameter is not applicable for the arguments (int, int, int, int)
  8. }
  9. }

如果定义一个参数为数组的方法,像调用可变参数的方法一样调用它是会报错,说明可变参数并不是一个数组,由此我们可以总结出:

5.可变参数可以兼容数组参数,但数组参数无法兼容可变参数。

参考资料

  1. JAVA可变参数(Varargs)

发表评论

表情:
评论列表 (有 0 条评论,306人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java方法参数-可变参数

    在上一篇文章中,小千给大家讲解了Java方法参数的形参和实参,以及之前方法的定义、调用和返回值,但方法的内容还有很多,比如方法的参数是怎么回事?接下来小千会在这篇文章中,继续给

    相关 Java可变参数

    可变参数 可变参数就是一个方法可以接收任意多个参数!例如:fun()、fun(1)、fun(1,1)、fun(1,1,1)。你可能认为这是方法重载,但这不是重载,你想想重

    相关 Java可变参数方法

    Java中可变参数方法 J2SE 1.5中提供了Varargs机制,允许直接定义能和多个实参相匹配的形参。从而,可以用一种更简单的方式,来传递个数可变的实参。 Vara