可变参数

可变参数【应用】

  • 可变参数介绍

    • 可变参数又称参数个数可变,用作方法的形参出现,那么方法参数个数就是可变的了
    • 方法的参数类型已经确定,个数不确定,我们可以使用可变参数
  • 可变参数定义格式

    修饰符 返回值类型 方法名(数据类型… 变量名) {  }
  • 可变参数的注意事项

    • 这里的变量其实是一个数组
    • 如果一个方法有多个参数,包含可变参数,可变参数要放在最后
  • 可变参数的基本使用

    public class ArgsDemo01 {
    public static void main(String[] args) {
    System.out.println(sum(10, 20));
    System.out.println(sum(10, 20, 30));
    System.out.println(sum(10, 20, 30, 40)); System.out.println(sum(10,20,30,40,50));
    System.out.println(sum(10,20,30,40,50,60));
    System.out.println(sum(10,20,30,40,50,60,70));
    System.out.println(sum(10,20,30,40,50,60,70,80,90,100));
    }
    //如果一个方法有多个参数,包含可变参数,可变参数要放在最后
    // public static int sum(int b,int... a) {
    // return 0;
    // } public static int sum(int... a) {
    int sum = 0;
    for(int i : a) {
    sum += i;
    }
    return sum;
    }
    }

创建不可变集合【理解】

目的:实现集合元素的批量添加。

  • 方法介绍

    • 在List、Set、Map接口中,都存在of方法,可以创建一个不可变的集合

      • 这个集合不能添加,不能删除,不能修改
      • 但是可以结合集合的带参构造,实现集合的批量添加
    • 在Map接口中,还有一个ofEntries方法可以提高代码的阅读性
      • 首先会把键值对封装成一个Entry对象,再把这个Entry对象添加到集合当中
  • 示例代码

    public class MyVariableParameter4 {
    public static void main(String[] args) {
    // static <E> List<E> of(E…elements) 创建一个具有指定元素的List集合对象
    //static <E> Set<E> of(E…elements) 创建一个具有指定元素的Set集合对象
    //static <K , V> Map<K,V> of(E…elements) 创建一个具有指定元素的Map集合对象 //method1();
    //method2();
    //method3();
    //method4(); } private static void method4() {
    Map<String, String> map = Map.ofEntries(
    Map.entry("zhangsan", "江苏"),
    Map.entry("lisi", "北京"));
    System.out.println(map);
    } private static void method3() {
    Map<String, String> map = Map.of("zhangsan", "江苏", "lisi", "北京", "wangwu", "天津");
    System.out.println(map);
    } private static void method2() {
    //set传递的参数当中,不能存在重复的元素。
    Set<String> set = Set.of("a", "b", "c", "d","a");
    System.out.println(set);
    } private static void method1() {
    List<String> list = List.of("a", "b", "c", "d");
    System.out.println(list);
    //list.add("Q");
    //list.remove("a");
    //list.set(0,"A");
    //System.out.println(list); // ArrayList<String> list2 = new ArrayList<>();
    // list2.add("aaa");
    // list2.add("aaa");
    // list2.add("aaa");
    // list2.add("aaa");
    // Exception in thread "main" java.lang.UnsupportedOperationException //不可变集合的目的是实现集合的批量添加。
    //首先是通过调用List.of方法来创建一个不可变的集合,of方法的形参就是一个可变参数。
    //再创建一个ArrayList集合,并把这个不可变的集合中所有的数据,都添加到ArrayList中。
    ArrayList<String> list3 = new ArrayList<>(List.of("a", "b", "c", "d"));
    System.out.println(list3);
    }
    }

【重学Java】可变参数的更多相关文章

  1. 重学 Java 设计模式:实战适配器模式

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 擦屁屁纸80%的面积都是保护手的! 工作到3年左右很大一部分程序员都想提升自己的技术 ...

  2. Java可变参数 & Python可变参数 & Scala可变参数

    Java 可变参数的特点: (1).只能出现在参数列表的最后: (2)....位于变量类型和变量名之间,前后有无空格都可以: (3).调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体 ...

  3. Java可变参数/可变长参数

    Java可变参数/可变长参数 传递的参数不确定长度,是变长的参数,例如小例子: package demo; public class Demo { public static int sum(int ...

  4. 重学Java(一):与《Java编程思想》的不解之缘

    说起来非常惭愧,我在 2008 年的时候就接触了 Java,但一直到现在(2018 年 10 月 10 日),基础知识依然非常薄弱.用一句话自嘲就是:十年 IT 老兵,Java 菜鸡一枚. 于是,我想 ...

  5. 重学 Java 设计模式:实战抽象工厂模式

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获!

  6. 重学 Java 设计模式:实战单例模式

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 5个创建型模式的最后一个 在设计模式中按照不同的处理方式共包含三大类:创建型模式.结 ...

  7. 重学 Java 设计模式:实战桥接模式(多支付渠道「微信、支付宝」与多支付模式「刷脸、指纹」场景)

    作者:小傅哥 博客:https://bugstack.cn - 编写系列原创专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 为什么你的代码那么多ifelse 同类的业务.同样的功能, ...

  8. 重学 Java 设计模式:实战装饰器模式(SSO单点登录功能扩展,增加拦截用户访问方法范围场景)

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 对于代码你有编程感觉吗 很多人写代码往往是没有编程感觉的,也就是除了可以把功能按照固 ...

  9. 重学 Java 设计模式:实战外观模式「基于SpringBoot开发门面模式中间件,统一控制接口白名单场景」

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 你感受到的容易,一定有人为你承担不容易 这句话更像是描述生活的,许许多多的磕磕绊绊总 ...

  10. 重学 Java 设计模式:实战享元模式「基于Redis秒杀,提供活动与库存信息查询场景」

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 程序员‍‍的上下文是什么? 很多时候一大部分编程开发的人员都只是关注于功能的实现,只 ...

随机推荐

  1. 云计算OpenStack核心组件---glance镜像服务(6)

    一.glance介绍: Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像的查找.注册和检索等. Glance提供Restful API可以查询虚拟机镜像的metadata ...

  2. Boa Web Server 缺陷报告及其修正方法

    综述 Boa 作为一种轻巧实用的 WEB 服务器广泛应用于嵌入式设备上, 但 Boa 对实现动态网页的 CGI  的支持上仍存在一些缺陷, 本文描述了 Boa 对 CGI 的 Status/Locat ...

  3. 设置添加SSH-(转自破男孩)

    很多朋友在用github管理项目的时候,都是直接使用https url克隆到本地,当然也有有些人使用 SSH url 克隆到本地.然而,为什么绝大多数人会使用https url克隆呢? 这是因为,使用 ...

  4. 端口映射(socket应用)

    # coding=gb2312 import sys import time import socket import thread import subprocess ############### ...

  5. tar压缩文件 .tar.gz

    打包并压缩文件 tar -zcf ansible.tar.gz ansible/* z    gzip属性 c    建立压缩文件 f    指定文件名 v    显示过程 解压文件 tar xzf ...

  6. [leetcode] 33. 搜索旋转排序数组(Java)

    33. 搜索旋转排序数组 说实话这题我连题都没有看懂....真是醉了 二分,没意思,直接交了- - https://www.jiuzhang.com/solutions/search-in-rotat ...

  7. Django框架中logging的使用

    Django框架中logging的使用 日志是我们在项目开发中必不可少的一个环节,Python中内置的logging已经足够优秀到可以直接在项目中使用. 本文介绍了如何在DJango项目中配置日志. ...

  8. Nginx 配置实例-配置虚拟主机

    Nginx 配置实例-配置虚拟主机 配置基于域名的虚拟主机 1. 配置域名为 aaa.domain.com 的虚拟主机 1.1 nginx 中虚拟主机的配置 1.2 相关目录及文件的创建 1.3 验证 ...

  9. GO文件读写03---使用缓冲读写实现视频文件的拷贝

    package main import ( "bufio" "fmt" "io" "os" ) /* ·使用缓冲读写实现 ...

  10. Go语言流程控制06--猜数字游戏

    package main import ( "fmt" "math/rand" "time" ) /* ·随机生成一个三位数 ·让用户输入其 ...