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);
//    }

}
posted @ 2022-04-03 22:10  a-tao必须奥利给  阅读(244)  评论(0)    收藏  举报