首页 理论教育 可变参数的定义与使用

可变参数的定义与使用

时间:2022-02-28 理论教育 版权反馈
【摘要】:为Java的操作符,表示0到多个,必须是3个点;argumentName为参数名。调用方法的实参个数分别是0个、1个和5个。数组变量不能传递给可变参数。由于可变参数是Object类型,所以Object类的子类对象都是合法的实参,这样,基本类型自动装箱(转换成)相应的包装类传给形参。

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节中讨论。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈