Java可变长参数varargus

本文详细介绍了Java SE 1.5引入的可变长度参数机制(varargus),包括其定义方式、使用方法及注意事项,并探讨了重载匹配原则。

一.什么是可变长度参数


Java SE 1.5中提供了varargus机制,允许直接定义能和多个实参相匹配的形参。从而,可以用一种更简单的方式,来传递个数可变的实参。这种机制适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。


二.使用方式

1.定义带有可变长度参数的函数

                只要在一个形参的“类型”与“参数名”之间加上三个连续的“.”即可。

public static void testVarargus(int...a)
{
  for (int i:a)
  {
    System.out.println(i);
  }
}
2.调用方法
(1)传入多个参数
            testVarargus(1,2,3,4,5);	
(2)传入数组
            int a[]={1,2,3,4,5};
            testVarargus(a);
(3)传入空参数是合法的
            testVarargus();


三.注意
    1.可变长度的形参必须放在参数表的最后,也就是说,仅可以有一个可变长度参数
    public static void testVarargus(int b,int c,int...a)
    {
        for (int i:a)
        {
            System.out.println(i);
        }
    }

2.varargus与数组参数,在重载时会发生冲突。(调用包含可变长度参数的函数时,编译器为可变参数隐含创建一个数组。)

    public static void testVarargus(int...a)     //编译器报错
        {
            for (int i:a)
            {
                System.out.println(i);
            }
        }

    public static void testVarargus(int [] b)
        {
            for (int i:b)
            {
                System.out.println(i);
            }
        }

四.重载匹配原则


1.参数个数固定的函数优先

发生重载时,当可变参数的函数与固定参数的函数都可以匹配的情况下,固定参数的函数优先。

    public static void testVarargus(int...a)      
    {
        System.out.println("this is varargus func");
    }

    public static void testVarargus(int a,int b)    //优先调用该函数
    {
        System.out.println("this is fixed func");
    }

2.匹配歧义
两个包含可变参数的函数发生重载时,若都可以匹配,则发生歧义,编译器报错。
    public static void testVarargus(int...a)    //若调用testVarargus(1,2)则发生歧义
    {
        System.out.println("this is varargus func");
    }

    public static void testVarargus(int a,int... b)
    {
        System.out.println("this is fixed func");
    }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值