欢迎访问文稿网!

可变参数的定义与使用

范文之家 分享 时间: 加入收藏 我要投稿 点赞

可变参数的定义与使用

    4.9.1 可变参数的定义与使用

    可变参数的简单语法格式为:

    img260

    其中,argumentList为普通参数,可选项;dataType为数据类型或者类;自动转换成dataType[]类型的数组;…为Java的操作符,表示0到多个,必须是3个点;argumentName为参数名。

    注意:一个方法中,只能定义一个可变参数,而且可变参数必须位于最后一项。

    【例4-32】 方法中可变参数是基本类型的举例。

    img261

    img262

    程序运行结果:

    (注:第一行是空行)

    img263

    思考与分析:(1)方法test(int...objects)中的参数是可变参数。它的参数个数不确定,但都是int类型。调用方法的实参个数分别是0个、1个和5个。

    (2)for(int i:objects)是增强for语句。相当于for(k=0,i=objects[k];k<objects.length;k++,i=objects[k]){}。

    模仿例4-32:编程完成具有可变参数的求最大值方法。

    【例4-33】 可变参数是引用类型的举例。

    img264

    程序运行结果:

    img265

    思考与分析:(1)可变参数列表中同时使用基本类型与包装类。

    (2)可变参数==数组参数?在带可变参数的方法体中,读取可变参数列表就是以数组的方式来读取;带可变参数的方法可以传入一个数组参数,但带数组参数的方法却不能传入可变参数。new Integer[]{1,2,3,4,5}是包装类的数组对象,可作实参,但数组变量本质上是数组对象的引用值,若打印的话只能是对象的字符串,不能作实参。

    模仿例4-33:编程使用可变参数,打印参加聚会人员的名单。

    【例4-34】 可变参数的类型可以是类,但调用方法的实参是可变参数类型的子类。

    img266

    img267

    程序运行结果:

    img268

    思考与分析:(1)数组对象可作实参,但必须转换成Object类型。数组变量不能传递给可变参数。这样,String[]name=new String[]{″张三″,″李四″,″王五″};listNameInParty(″倪二″,name);语句添加到程序中,会出现编译错误。

    (2)由于可变参数是Object类型,所以Object类的子类对象都是合法的实参,这样,基本类型自动装箱(转换成)相应的包装类传给形参。有关自动装箱内容在6.6.3节中讨论。

221381
领取福利

微信扫码领取福利

微信扫码分享