Java-可变参数
可变参概述:
- 定义方法的时候不知道该定义多少个参数
发现问题:
- 根据案例我们发现,每当参数增加,就需要新增一个方法,因为参数列表的不一致导致找不到方法
但是,这样写。我们很麻烦。
所以java替我们考虑到了这一个问题,提供了一个技术给我们使用:可变参数
格式
** 修饰符 返回值类型 方法名(数据类型… 变量名){}**
注意事项:
- 1、如果将来传参的参数类型不一致,却想要做一样的操作,可变参数就用不了了,为什么?
数组只能存放同一种数据类型的元素。- 2、将来传参的时候,传一个字符串,和若干个int类型的数值,输出这个字符串和若干个int类型的值的和
定义的时候,需要将可变参数放到最后一个定义
package com.shujia.wyh.day20;
import java.util.Arrays;
import java.util.List;
/*
可变参数概述:定义方法的时候不知道该定义多少个参数
根据案例我们发现,每当参数增加,就需要新增一个方法,因为参数列表的不一致导致找不到方法
但是,这样写。我们很麻烦。
所以java替我们考虑到了这一个问题,提供了一个技术给我们使用:可变参数
格式
修饰符 返回值类型 方法名(数据类型… 变量名){}
注意事项:
1、如果将来传参的参数类型不一致,却想要做一样的操作,可变参数就用不了了,为什么?
数组只能存放同一种数据类型的元素。
2、将来传参的时候,传一个字符串,和若干个int类型的数值,输出这个字符串和若干个int类型的值的和
定义的时候,需要将可变参数放到最后一个定义
Arrays工具类中的一个方法
public static <T> List<T> asList(T... a)返回由指定数组支持的固定大小的列表。
*/
public class ArgsDemo {
public static void main(String[] args) {
// ArgsDemo argsDemo = new ArgsDemo();
// argsDemo.sum();
//求两个数之和
int a = 10;
int b = 20;
sum(a, b);
//求三个数之和
int c = 30;
sum(a, b, c);
//求四个数之和
int d = 40;
sum(a, b, c, d);
// show(1, 2, 3, 4, 5,"String");
show("java", 1, 2, 3, 4, 5);
show2(10001,98,99,100);
//底层其实是将我们的可变参数的数组转成一个ArrayList集合
List<String> strings = Arrays.asList("java", "hadoop", "hive", "bigdata");
}
public static void show2(int id, int... ints) {
int sum = 0;
for (int i : ints) {
sum += i;
}
System.out.println("学号:" + id + ",总成绩:" + sum);
}
public static void show(String s, int... ints) {
int sum = 0;
for (int i : ints) {
sum += i;
}
System.out.println(s + "可变参数之和为:" + sum);
}
// public static void show(String s, int... ints) {
// int sum = 0;
// for (int i : ints) {
// sum += i;
// }
//
// System.out.println(s + "可变参数之和为:" + sum);
// }
//我想求int数值的和
//这里的ints其实就是一个数组的名字(将来传进来的int类型的数值组成一个int类型的一维数组)
public static void sum(int... ints) {
// System.out.println(ints);
int sum = 0;
for (int i = 0; i < ints.length; i++) {
sum += ints[i];
}
System.out.println(sum);
}
// public static void sum(int a, int b) {
// System.out.println(a + b);
// }
//
// public static void sum(int a, int b, int c) {
// System.out.println(a + b + c);
// }
//
// public static void sum(int a, int b, int c, int d) {
// System.out.println(a + b + c + d);
// }
}

浙公网安备 33010602011771号