255、256 可变参数

255 可变参数

package e255;

public class ArgsDemo01 {

    public static void main(String[] args) {

        System.out.println(sum(1,2));

        System.out.println(sum(1,2,3));

        System.out.println(sum(1,2,3,4));        

    }

    public static int sum(int a,int b){

        return a + b;

    }

    public static int sum(int a,int b,int c){

        return a + b + c;

    }

    public static int sum(int a,int b,int c,int d){

        return a + b + c + d;

    }

}

--------------------------------------------------------------

如上代码,没有可变参数,则需要加和几个参数,就要创建几个参数的方法

可变参数又称-参数个数可变,用作方法的形参,则方法的参数个数可变

【格式】

修饰符 返回值 方法名(数据类型变量名){}

例如,public static int sum(inta){}

--------------------------------------------------------------

package e255;

public class ArgsDemo01 {

    public static void main(String[] args) {

        System.out.println(sum2(1,2));

        System.out.println(sum2(1,2,3,4));

    }

    public static int sum2(int...n){

        return 0;

    }

}

/*

[I@119d7047

0

[I@776ec8df

0

由此可见,(可变参数的基本原理)n是一个数组

*/

--------------------------------------------------------------

package e255;

public class ArgsDemo01 {

    public static void main(String[] args) {

        System.out.println(sum2(1,2)); //3

        System.out.println(sum2(1,2,3,4)); //10

    }

    public static int sum2(int...n){

        int sum = 0;

        for (int i:n){

            sum += i;

        }

        return sum;

    }

}

--------------------------------------------------------------

如果是多个参数,包含一般参数、可变参数,则先写一般参数,后写可变参数,如下

package e255;

public class ArgsDemo01 {

    public static void main(String[] args) {

        System.out.println(sum2(1,2));//2,这是sum(2)的结果,

        System.out.println(sum2(1,2,3,4));//9,这是sum(2+3+4)的结果,1是int a,所以计算时不算1

    }

    public static int sum2(int a,int...n){

        int sum = 0;

        for (int i:n){

            sum += i;

        }

        return sum;

    }

}

256 可变参数的使用

(帮助文档)

class List

static <E> List<E> of(E e1,E e2) 返回一个包含两个数量元素的不可变列表

static <E> List<E> of(E…elements) 返回包含任意数量元素的不可变列表

·

class Set

static <E> Set<E> of(E e1,E e2) 返回一个包含两个数量元素的不可变集合

static <E> Set<E> of(E…elements) 返回包含任意数量元素的不可变集合

·

【可变参数的使用】

Arrays工具类中有一个静态方法

- public static <T> List<T> asList(T…a),返回由指定数组支持的固定大小的列表

- 返回的集合不能做增删操作(add、remove),可以修改(set)

List接口中有一个静态方法

- public static <E> List<E> of(E…elements),返回包含任意数量元素的不可变列表

- 返回的集合不能做增删操作(add、remove),可以修改(set)

Set接口中有一个静态方法

- public static <E> Set<E> of (E…elements),返回一个包含任意数量元素的不可变集合

- 返回的集合不能做增删改操作(add、remove、set),不能给重复的元素

--------------------------------------------------------------

package e256;

import java.util.Arrays;

import java.util.List;

public class ArgsDemo01 {

    public static void main(String[] args) {

//        知识点:public static <T> List<T> asList(T...a);

        List<String> l = Arrays.asList("HELLO","TRACY","GOOD MORNING");

//        l.add("HOW DO YOU DO");UnsupportedOperationException

//        l.remove(2);UnsupportedOperationException

        l.set(1,"BEN");

//---由此可知,通过Arrays的asList方法得到的List集合,不可使用add和remove方法,可以使用set方法

//---add方法、remove方法会改变集合元素数量,set方法不会

        System.out.println(l);//[HELLO, BEN, GOOD MORNING]

    }

}

--------------------------------------------------------------

package e256;

import java.util.List;

public class ArgsDemo02 {

    public static void main(String[] args) {

        List<String> l = List.of("hello", "RAT", "morning","morning");

//        l.add("it's friday");UnsupportedOperationException

//        l.remove(0);UnsupportedOperationException

//        l.set(0,"hi");UnsupportedOperationException

//---由此可知,通过List的of方法得到的List不可使用add、remove、set方法

        System.out.println(l);

    }

}

--------------------------------------------------------------

package e256;

import java.util.Set;

public class ArgsDemo03 {

    public static void main(String[] args) {

//        Set<String> s = Set.of("hello", "MOLE", "goodnight","goodnight");IllegalArgumentException,Set集合不可以有重复元素

        Set<String> s = Set.of("hello", "MOLE", "goodnight");

//        s.add("SEE YOU TOMORROW");UnsupportedOperationException

//        s.remove(0);UnsupportedOperationException

//        s.set编译时报错,set集合没有带索引的方法,因此set集合不能做增删操作

        System.out.println(s);

    }

}

おすすめ

転載: blog.csdn.net/m0_63673788/article/details/121416219