目录
一、概述:
二、格式:
三、注意事项(使用规范):
四、代码演示:
演示规范①~③:
演示规范④:
演示规范⑤:
课堂练习:
代码演示:
输出结果:
五、英文版本讲解:
一、概述:
java中,我们可以将名称相同,功能也相同,但是形参个数不同的多个函数,封装为某个类中的一个函数。比如:要求多个数的和,此时并不能确定一共要求多少个数的和,如果形参的个数每变化一次,就要有一个新的函数,那我们编程的效率就会大打折扣。我们可以通过可变参数的方式来解决这个简单的问题。
二、格式:
访问权限修饰符 返回值类型 函数名(数据类型... 变量名){
//方法体
}
Δ注意这里的"数据类型... 变量名"格式,里面的三个点的格式是固定的,不可随便添加空格。
三、注意事项(使用规范):
规范①:调用可变参数的方法时,传入实参的个数可以是0~n。(n = 0,1,2......)
规范②:传入的实参也可以直接是一个数组。
规范③:可变参数的本质,其实就是一个数组,因此你也可以把它当数组来用。
规范④:当形参中既含有可变参数,也含有普通的参数,必须确保可变参数在形参列表的最后。
规范⑤:每个形参列表都只能有一个可变参数。
四、代码演示:
演示规范①~③:
package csdn.varparameter;
/*
规范①:调用可变参数的方法时,传入实参的个数可以是0~n。(n = 0,1,2......)
规范②:传入的实参也可以直接是一个数组
规范③:可变参数的本质,其实就是一个数组,因此你也可以把它当数组来用。
规范④:当形参中既含有可变参数,也含有普通的参数,必须确保可变参数在形参列表的最后。
规范⑤:每个形参列表都只能有一个可变参数。
*/
public class VariableParameter {
public static void main(String[] args) {
Test1 t1 = new Test1();
// 规范①:调用可变参数的方法时,传入实参的个数可以是0~n。(n = 0,1,2......)
int[] array1 = {2, 11, 211, 985, 141};
int[] array2 = {1, 2, 7};
System.out.println(t1.getSum(0, 1, 2, 3, 4, 5));
System.out.println(t1.getSum(5, 5, 5));
System.out.println("------------------------");
// 规范②:传入的实参也可以直接是一个数组
System.out.println(t1.getSum(array1));
System.out.println(t1.getSum(array2));
System.out.println("------------------------");
}
}
class Test1 {
public int getSum(int... parameters) {
// 规范③:可变参数的本质,其实就是一个数组,因此你也可以把它当数组来用,例如,我们可以获取它的长度。
System.out.println("可变参数中含有" + parameters.length + "个参数");
int num = 0;
for (int i = 0; i < parameters.length; ++i) {
num += parameters[i];
}
System.out.print("传入参数的总和是 : ");
return num;
}
}
输出结果:
演示规范④:
package csdn.varparameter;
/*
规范④:当形参中既含有可变参数,也含有普通的参数,必须确保可变参数在形参列表的最后。
规范⑤:每个形参列表都只能有一个可变参数。
*/
public class VariableParameter {
public static void main(String[] args) {
Test2 t2 = new Test2();
int[] array1 = {2, 11, 211, 985, 141};
int[] array2 = {1, 2, 7, 5};
System.out.println(t2.getSum2(array1, 1, 3, 1));
System.out.println(t2.getSum2(array1, array2));
System.out.println("------------------------");
}
}
// 规范④:当形参中既含有可变参数,也含有普通的参数,必须确保可变参数在形参列表的最后。
class Test2 {
public int getSum2(int[] arr, int... parameters) {
System.out.println("可变参数中含有" + parameters.length + "个参数");
/*
值得注意的是,此处输出的仅仅是可变参数中的个数,并不是所有形参的个数
形参的个数 >= 实际可变参数的长度
*/
int sum1 = 0;
int sum2 = 0;
for (int i = 0; i < arr.length; ++i) {
sum1 += arr[i];
} //用变量sum1来保存直接传入的数组arr中所有整型元素的和
for (int i = 0; i < parameters.length; ++i) {
sum2 += parameters[i];
} //用变量sum2来保存可变参数的实际传入参数的值的总和
System.out.print("传入参数的总的和为 : ");
return sum1 + sum2;
}
}
输出结果:
演示规范⑤:
规范⑤其实很好理解。你仔细看看规范④:可变参数与普通参数混用时,可变参数必须放在形参列表的最后。也就是说,只要你用了可变参数,你就得放最后,否则报错。所以,只要列表中有超过一个可变参数,你就无法保证每个可变参数都能放在最后,如下,GIF图:
课堂练习:
需求:利用可变参数,在Student类中定义一个静态方法,以达到这样的效果:调用该方法时,需要传入学生的姓名,年级和他四门课的成绩,然后会在控制台上打印出该学生的信息。
代码演示:
package csdn.varparameter;
public class VariableParameter {
public static void main(String[] args) {
System.out.println(Test3.studentScore("Cyan", 14, 141, 135, 80, 75));
System.out.println(Test3.studentScore("Five", 14, 135, 130, 82, 70));
System.out.println(Test3.studentScore("Ice", 14, 128, 125, 80, 80));
}
}
class Test3 {
public static String studentScore(String name, int grade, int... scores) {
int scoreNum = 0;
for (int i = 0; i < scores.length; ++i) {
scoreNum += scores[i];
}
return name + ",现在上 " + grade + "年级,一共得了" + scoreNum + "分";
}
}
输出结果:
五、英文版本讲解:
up也用英文讲解了可变参数的使用。有兴趣的小伙伴儿们,可以去看看英文版。链接如下:
https://blog.csdn.net/TYRA9/article/details/128188204?spm=1001.2014.3001.5502https://blog.csdn.net/TYRA9/article/details/128188204?spm=1001.2014.3001.5502文章来源:https://www.toymoban.com/news/detail-814097.html
System.out.println("END------------------------------------------------------------");文章来源地址https://www.toymoban.com/news/detail-814097.html
到了这里,关于java 可变参数 详解(通俗易懂)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!