讲解方法的可变参数
好处是是的参数列表更加的灵活
通常用于处理不清楚用户到底输入多少个参数的情况 。例如 - 计算器

可变参数,参数的数量可变!

注意:
1.数据类型。。。代表可变参数,即可以传入任意个该类型的数据
2.可变参数不能放在前面,只能放在后面
3.可变参数的方法与数组的方法不能重载,因为可变参数就是一个数组

  1. package Test19_Demo.Demo06;/*
  2. @create 2020--12--09--14:30
  3. */
  4. import java.util.ArrayList;
  5. import java.util.Collection;
  6. import java.util.Collections;
  7. public class ArgsDemo {
  8. public static void main(String[] args) {
  9. //利用父类的接口创建对象
  10. Collection<String> c = new ArrayList<>();
  11. //添加数据 - 调用方法
  12. Collections.addAll(c, "黄药师", "段誉", "虚竹");//jvm会自动将多个参数封装成一个数组
  13. System.out.println(c);
  14. System.out.println("----------------------");
  15. //自定义一个方法 - 可以灵活的处理参数列表
  16. int sum = add(10, 20, 50, 88);
  17. System.out.println(sum);
  18. System.out.println("-----------------------");
  19. int[] arr = {10, 25, 4, 5, 32, 45, 484, 11, 54, 654};
  20. int add = add(arr);//表示可变的参数列表其实就是一个数组
  21. System.out.println(add);
  22. }
  23. //封装一个可变参数的方法
  24. public static int add(int... a) {
  25. //用来记录所有数字的和
  26. int sum = 0;
  27. //遍历参数列表的数组
  28. for (int i = 0; i <a.length ; i++) {
  29. int j = a[i];
  30. System.out.println(j);
  31. //没遇到一个数字就累加
  32. sum += j;
  33. }
  34. return sum;
  35. }
  36. /**
  37. *
  38. * 可变参数其实就是一个数组
  39. * 这里int[]其实和int... 是一样的,所以jvm判定为两个方法重名,并不是重载
  40. * public static int add(int[] arr){
  41. return 0;
  42. * }
  43. *
  44. * 什么是方法签名?
  45. * main(String[] args) - 方法签名:
  46. * 包含方法名和参数列表
  47. */
  48. }

方法签名?

包含方法名和参数列表