一、可变参数的引入 点击此处返回总目录 二、可变参数的使用 三、可变参数的注意事项 方法的可变参数 方法的可变参数是jdk1.5的新特性。可变参数对后面的开发很有帮助。 一、可变参数的引入 首先看下面的例子:定义一个方法,求两个数的和。这很容易就能实现。【例1】 例1
package cn.itcast.demo13; public class Test { public static void main(String[] args) { int result = add(3,5); System.out.println(result); } public static int add(int a,int b){ return a+b; } } |
但是要求也不是固定的,一成不变的。以后又有新的需求,希望求三个数的和。这样还需要写一个三个参数的函数,这样又需要写一个三个参数的函数。但是后来又有需求,要求4个数的和,...,100个数的和,方法无限的定义下去也不行。。。因此JDK想了个办法,把参数变成可变参数。 二、可变参数的使用 可变参数的前提:方法参数的数据类型确定,参数的个数任意。【例1】 语法:数据类型...变量名 //必须是三个点。 方法的可变参数的本质是一个数组。【例2】 例1:调用一个带有可变参数的方法时,传递的参数的个数任意。
package cn.itcast.demo14; public class Test { public static void main(String[] args) { fun(); fun(2,3); fun(4,5,6,7,2,3); //调用一个带有可变参数的方法时,传递的参数可以是任意个(0,1,2,...) } public static int fun(int...a){ //带可变参数的方法 return 1; } } |
例2:可变参数的本质是一个数组。
package cn.itcast.demo14; public class Test { public static void main(String[] args) { fun(); //0 fun(2,3); //2 fun(4,5,6,7,2,3); //6 } public static void fun(int...a){ //a是一个int数组,存放的是参数。 System.out.println(a.length); //可变参数的本质是数组。返回的是数组的长度,也就是参数的个数。 } } |
例3:可变参数的使用:求任意个数的和。
package cn.itcast.demo13; public class Test { public static void main(String[] args) { //调用一个带有可变参数的方法时,传递的参数可以是任意个(0,1,2,...) System.out.println(fun()); //0 System.out.println(fun(3)); //3 System.out.println(fun(3,5)); //8 System.out.println(fun(3,12,2,44,3,5,6,6,7,4,323,9,3,6,3)); //436 } public static int fun(int...a){ //这是一个带有可变参数的方法。 int sum = 0; for(int i:a){ sum +=i; } return sum; } } |
三、可变参数的注意事项 1.一个方法中,可变参数只能有一个。【例1】、【例2】 2.可变参数必须写在参数的最后一位。【例3】、【例4】、【例5】 例1:下列程序报错。
package cn.itcast.demo15; public class Test { public static void main(String[] args) { fun(1,2,3,4,5,); } public static void fun(int...a,int...b){ //有两个可变参,报错。输入的数不知道传给谁。 System.out.println(a.length); } } |
例2:下列程序报错。
package cn.itcast.demo15; public class Test { public static void main(String[] args) { fun("aa","bb",1,2,3,4,5); } public static void fun(String...s,int...a){ //有两个可变参,报错。虽然看着很合理,但是就是不允许同一个方法有多个可变参。 System.out.println(a.length); } } |
例3:可变参数在最后一位,正确。
package cn.itcast.demo15; public class Test { public static void main(String[] args) { fun("a",1,2,3); } public static void fun(String s,int...a){ //前面是String类型,后面是可变参。 System.out.println(a.length); //3 } } |
例4:可变参数在前面,报错。下列程序报错。
package cn.itcast.demo15; public class Test { public static void main(String[] args) { fun(1,2,3,"aaa"); } public static void fun(int...a,String s){ //前面是可变参,后面是String类型。报错。 System.out.println(a.length); } } |
例5:可变参在最后,正确。
package cn.itcast.demo15; public class Test { public static void main(String[] args) { fun(1,2,3,4,5); } public static void fun(int a,int b,int...c){ System.out.println(c.length); //3 } } |
|