java可变参数列表的实现

 参数就是我们调用一个方法时需要传入得数据,在方法中可能需要参数协助处理数据或者对参数进行解析处理以达到我们希望得到的数据和结果。

 平常我们在写一个方法时,我们能确定需要传入什么样的参数以及参数的个数,这样我们在实现这个方法的时候在确定参数的时候都会有明确的目标。但是有时候会有这种特殊情况,我们并不知道我们将要传入几个参数,或者说我们并不确定外部会传入多少参数。在这种情况下,我们就要用到可变参数列表。下面是可变参数方法的实现方法。

1、传入数组对象或者集合,这里只对传入数组对象进行简单说明,集合的实现也是一样。其实很简单,我们只要把需要传入的参数放到一个数组里面或者集合里面,再把数组或者集合当做参数传入即可。

 1 package demoArgs;
 2 /**
 3  * 测试数组对象当做参数
 4  * @author dyf
 5  *
 6  */
 7 public class TestArgs {
 8     //传一个对象数据当做参数
 9     static void printArray(Object[] args){
10         for (Object object : args) {
11             System.out.println(object);
12         }
13     }
14
15     public static void main(String[] args) {
16         printArray(new Object[]{
17                 new Integer(123),new Float(3.14),new Double(123.123)
18         });
19
20         printArray(new Object[]{"one","two","three"});
21
22         printArray(new Object[]{new A(),new A(),new A()});
23     }
24
25 }
26
27 class A{}

打印结果:

123
3.14
123.123
one
two
three
[email protected]
[email protected]
[email protected]

------------------------------------------------------------------------------------------------------------------------------

2、这种方法原理也是同上面一种相识,只不过是参数格式不同,格式是在参数类型后面跟三个点(...)然后在写上参数名。具体看代码。

 1 package demoArgs;
 2 /**
 3  * 测试可变参数列表
 4  * @author dyf
 5  *
 6  */
 7 public class TestArgs2 {
 8     //
 9     static void printArray(Object... args){
10         for (Object obj : args) {
11             System.out.println(obj);
12
13         }
14     }
15
16     public static void main(String[] args) {
17         printArray(new Object[]{
18                 new Integer(123),new Float(3.14),new Double(123.123)
19         });
20
21         printArray(new Object[]{"one","two","three"});
22
23         printArray(new Object[]{new B(),new B(),new B()});
24
25         printArray((Object[])new Integer[]{1,2,3,4,5,});
26
27         //这种形式不传参数也可以,有时这种用法会很有用
28         printArray();
29
30         printArray(new Integer(111),new String("测试可变参数列表"));
31     }
32
33 }
34 class B {}

打印结果:

123
3.14
123.123
one
two
three
[email protected]
[email protected]
[email protected]
1
2
3
4
5
111
测试可变参数列表

-----------------------------------------------------------------------------------------------

3、上面说的传入参数的参数类型是一致的,其实当传入的参数类型不一致的时候也可以实现传入可变参数列表。可变参数也可以不传。

 1 package demoArgs;
 2 /**
 3  * 测试多种类型的可变参数
 4  * @author dyf
 5  *
 6  */
 7 public class TestArray3 {
 8     static void printArray(int i,String... s){
 9         for (String str : s) {
10             System.out.println(i + "---" + str);
11             i++;
12         }
13
14         System.out.println(i);
15     }
16
17     public static void main(String[] args) {
18         printArray(1, "11","22","33");
19
20         printArray(1);
21     }
22 }

打印结果:

1---11
2---22
3---33
4
1

时间: 2024-11-08 19:09:00

java可变参数列表的实现的相关文章

Java 可变参数列表

1.可变参数列表的简单实现 当调用方法时,方法的参数个数或类型未知时,称其为可变参数列表.在以前的Java代码中,可以使用Object数组来实现这样的功能.因为,所有的类都是直接或间接继承于Object类. VarArgs.java package sample; class A1{} public class VarArgs { static void printArray(Object[] args){ for(Object obj:args) System.out.print(obj+"

可变参数列表-Java SE5新特性(转)

Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理.注意:可变参数必须位于最后一项.当可变参数个数多于一个时,必将有一个不是最后一项,所以只支持有一个可变参数.因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项. 可变参数的特点:(1)只能出现在参数列表的最后: (2)...位于变量类型和变量名之间,前后有无空格都可以:(3)调用可变参数的方法时,编译

java基础基础总结----- 构造方法,可变参数列表

1 package com.mon11.day2; 2 /** 3 * 类说明 :构造方法,可变参数列表 4 * @author 作者 : chenyanlong 5 * @version 创建时间:2017年11月2日 6 */ 7 class Employee{ 8 private double salary=1800; 9 10 //构造方法 11 public Employee(){ 12 System.out.println("构造方法被调用"); 13 } 14 15 //

java可变参数方法重载的注意事项

1.可变参数方法与数组参数方法重载 public class MethodParams{ //带可变参数的方法 public void hello(String ...params) { System.out.println("执行带可变参数的方法,参数个数为:" + params.length); } //带数组参数的方法 public void hello(String[] params) { System.out.println("执行带数组参数的方法,数组长度为:&q

16 可变参数列表和重载问题(最后选择可变参数列表)

package com.wys.java; /** * 关于可变参数列表和重载问题 * @author snape * @version 1.0 * */ public class ArgsDemo2 { //可变参数列表所在方法是最后被访问的 //带可变参数的方法 public int plus(int n, int m){ System.out.println("不带可变参数的方法被调用"); return m+n; } //不带可变参数的方法 public int plus(in

15 可变参数列表

可变参数的应用: 一个方法中只能有一个可变参数: 可变参数必须在参数列表的最后一个位置: 参数列表中(形参是可变参数,实参为数组)是可行的,但反过来不行. package com.wys.java; public class ArgsDemo { /** * 一个方法中只能有一个可变参数: * 可变参数必须在参数列表的最后一个位置: * 参数列表中(形参是可变参数,实参为数组)是可行的,但反过来不行. * @param n */ //可变参数列表: //求和,参数个数不确定 public voi

可变参数列表的实现

在学习C语言的过程中,大家是不是和我一样,认为printf是一个神一样的函数?他可以接受不同数目,不同类型的参数,他到底是怎么实现的呢? 让我们去看一下它的源代码: printf源代码: int printf(const char *fmt,...) { int res; va_list arg; va_start(arg,fmt); res = vprintf(fmt,arg); va_end(arg); return res; } 它采用的是可变参数列表,可变参数列表主要有以下两个缺点: 1

【C语言】求多个数中的最大值(可变参数列表)

求多个数中的最大值要求用可变参数列表: 代码如下: <span style="font-size:18px;">#include<stdio.h> #include<stdarg.h> int Max(int n,...) { int i=0; int max=0; va_list arg; va_start(arg,n); for(i=0;i<n;i++) { int val=va_arg(arg,int); if (val>max)

PHP函数可变参数列表的具体实现方法介绍

PHP函数可变参数列表可以通过_get_args().func_num_args().func_get_arg()这三个函数来实现.我们下面就对此做了详细的介绍. AD:2014WOT全球软件技术峰会北京站 课程视频发布 也许对于PHP初级程序员来说,对于PHP函数并不能完全熟练的掌握.我们今天为大家介绍的PHP函数可变参数列表的实现方法主要是利用func_get_args().func_num_args().func_get_arg()这三个系统函数来实现的,其中func_get_args()