如何声明一个函数,既能接收单个参数,又可以接收多个参数呢?多个参数的个数是不固定的。
需要使用int ...param的方法,jvm会自动把他转换成int数组的方式,查看class类的反编译文件可以看到。
使用时候可以
不传递参数
传递1个参数
传递多个参数
传递int数组参数
方法中获取值可以使用数组的下标方式,也可以使用foreach循环。
如果同时存在同名称的不定参数函数和单参数函数,会自动调用单参数函数。
如果同时存在同名称的不定参数函数和数组参数函数,会编译报错。因为不定参数的本质是数组。
package com.lu.test; import java.util.ArrayList; import java.util.List; public class ParamTest { public static int getResultByParams2(List<Integer> params){ int num = 0; for (Integer integer : params) { num += integer; } System.out.println(num); System.out.println("111"); return num; } public static int getResultByParams2(int ... params){ int num = 0; for (Integer integer : params) { num += integer; } System.out.println(num); return num; } public static void main(String[] args) { getResultByParams2(new ArrayList<Integer>(){}); getResultByParams2(1); getResultByParams2(1,2,3); } }