java 可变参数 详解(通俗易懂)

目录

一、概述:

二、格式:

三、注意事项(使用规范):

四、代码演示:

        演示规范①~③:

        演示规范④:

        演示规范⑤:

        课堂练习:

        代码演示:

        输出结果:

五、英文版本讲解:


一、概述:

        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

        System.out.println("END------------------------------------------------------------");

转载:https://blog.csdn.net/TYRA9/article/details/128196406

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可变参数Java中的一个特性,它允许在方法调用时传入不确定个数的参数。可变参数的使用可以使方法调用更加灵活,类似于方法的重载。可变参数的定义方式是在方法的参数列表中使用省略号(...)来表示。\[1\] 例如,我们可以定义一个求和的方法,使用可变参数来接收多个整数参数,并将它们相加得到总和。在方法体中,可以将可变参数当作数组来访问。\[1\] 在Java 5之后,引入了变长参数的概念。我们可以在方法定义时使用不确定个数的参数。对于同一个方法,也可以通过不确定参数个数的方式进行重载。\[2\] 使用可变参数时需要注意以下几点: 1. 可变参数只能在参数列表的最后位置。 2. 在方法体中,可以将可变参数当作数组来访问。\[1\] 总结来说,可变参数Java中一种方便的特性,它允许在方法调用时传入不确定个数的参数,使方法的使用更加灵活。 #### 引用[.reference_title] - *1* [java关于可变参数的使用](https://blog.csdn.net/java4found/article/details/8668614)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Java可变参数](https://blog.csdn.net/skylibiao/article/details/81170449)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值