赞
踩
可变参数的作用:提供了一个方法,参数的个数是可变的 ,解决了部分方法的重载问题。(不理解重载也没关系),下面举例说明可变参数:
- public class Test{
-
- public static void main(String[] args){
- method01(10);
-
- }
- public static void method01(int num){
- System.out.println("1");
-
- }
- }
-
-
- //很显然该程序的输出结果为:1
如果你想在上面这段程序的method01()方法中传入多个实参,比如将method01(10);改成method01(10,20);显然这会引起错误,但是可变参数能解决这个问题(其实方法重载也可以,这里只讨论可变参数),请看这个例子:
- public class Test1{
-
- public static void main(String[] args){
- method01();
- method01(10);
- method01(10,20);
- method01(10,20,30);
- }
- public static void method01(int...num){
- //这里的...用来说明这是一个可变参数,格式为:方法名(数据类型...形参名),下面3条注释是例子
- //int...num1
- //double...num2
- //boolean...num3
-
- System.out.println("1");
-
- }
- }
- //程序的输出结果为:
- //1
- //1
- //1
- //1
因为参数是可变的无论method01()里传入多少个int型实参,即便是没有传入实参,或者传入n多个实参,它都能顺利接受并执行,上面的程序调用了四次method01()方法,所以输出了四个1。
其实方法的内部对可变参数的处理跟数组是一样的。举个例子:
- public class TestArray12{
-
- public static void main(String[] args){
-
- method01(30,40,50,60,70);
-
- }
- public static void method01(int...num){
- System.out.println("1");
-
- for(int i:num){//增强for循环遍历
- System.out.print(i+"\t");
- }
- }
- }
- //运行结果:
- //1
- //30 40 50 60 70
请看例子:
- public class Test2{
-
- public static void main(String[] args){
-
- method01(20,30,40);
-
-
- }
- public static void method01(int...num,int num2){
- System.out.println("1");
- for(int i:num){
- System.out.print(i+"\t");
- }
- System.out.println();
-
- System.out.println(num2);
- }
- }
- //这段程序是错误的,因为20,30,40都被前面的可变参数接收,形参num2没有收到数值,编译不通过
- //将(int...num,int num2)改为(int num2,int...num)即可,把可变参数放后面。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。