可变参数

[java]中的可变参数定义和使用 public class Demo1 {   //此时,数组arr必须是最后一个参数; public static int sum(int... arr) // 此时的参数arr是一个整形的数组 { int temp = 0; for (int i = 0; i < arr.length; i++) { temp += arr[i]; } return temp; } public static void main(String[] args) { System.out.println(sum(1)); System.out.println(sum(1, 2)); System.out.println(sum(1, 2, 3)); System.out.println(sum(1, 2, 3, 4)); int[] arr = { 2, 3, 4 }; System.out.println(sum(arr)); } } 输出结果: 1 3 6 10 9 我们之前也编写过将数组作为参数,或者返回值,这里也回顾一下: 数组作为参数和返回值的方法定义语法: public int [] myArrSort(int [] arr) {   ````` } 调用: int [] arr={1,3,5,2,4}; int [] num=myArrSort(arr); 输出: for(int item : arr) { System.out.println(item); } 立即下载

可变参数

首先,假设出现一种情况,需要取两个数中的最大值。
我们可以写一个方法:

/**
可变参数功能说明
*/
public class VariableDemo {
    public static void main(String[] args){
        int num1 = 10;
        int num2 = 5;

        int mx = max(num1,num2);
        System.out.println("在" + num1 + "和" + num2 + "中最大值是" + mx);
    }

    /**
        取两个整型中的最大值
    */
    public static int max(int num1, int num2){
        return num1 >= num2 ? num1 : num2;
    }
}

现在我想要取三个数中的最大值,那么程序就要新加一个方法:

/**
可变参数功能说明
*/
public class VariableDemo {
    public static void main(String[] args){
        int num1 = 10;
        int num2 = 5;
        int num3 = 20;
        int mx = max(num1, num2, num3);
        System.out.println("在" + num1 + " , " + num2 + "和" + num3 + "中最大值是" + mx);


    }

    /**
        取两个整型中的最大值
    */
    public static int max(int num1, int num2){
        return num1 >= num2 ? num1 : num2;
    }
    /**
        取三个整型中的最大值
    */
    public static int max(int num1, int num2, int num3){
        int temp = num1 >= num2 ? num1: num2;
        return temp >= num3 ? temp : num3;

    }
}

这样写,也可以满足要求。如果我想取4个整数或者5个整数中的最大值,那么就要再写方法。
或者传递一个数组给max()方法,但是数组的新建和遍历都比较麻烦。

这时候我们就可以用可变参数解决问题:

一个方法在调用的时候必须根据其规定的参数传递参数,规定了5个,就必须传递五个,但是在JDK5.0之后,为了让方法更加具有灵活性,使用了可变参数,在调用方法的时候可以任意多的传递参数。

可变参数的定义方法:  
返回值类型  方法名称(类型...参数名称){}  

eg:  
int max(int... num){}
此时,num就相当于一个数组对象

例子如下:

/**
    可变参数功能说明
*/
public class VariableDemo {
    public static void main(String[] args){
        int num1 = 10;
        int num2 = 5;
        int num3 = 20;

        //int mx = max(num1, num2);
        //System.out.println("在" + num1 + "和" + num2 + "中最大值是" + mx);

        //int mx = max(num1, num2, num3);
        //System.out.println("在" + num1 + " , " + num2 + "和" + num3 + "中最大值是" + mx);

        int mx = max(17, 26, 23, 94, 105);
        System.out.println("最大值是"+mx);
    }

    /**
        取两个整型中的最大值
    */
    public static int max(int num1, int num2){
        return num1 >= num2 ? num1 : num2;
    }

    /**
        取三个整型中的最大值
    */
    public static int max(int num1, int num2, int num3){
        int temp = num1 >= num2 ? num1: num2;
        return temp >= num3 ? temp : num3;

    }

    /**
        采用可变数组取整型中的最大值
    */
    public static int max(int... num){
        int max = num[0];
        for(int n : num) {
            if(n > max){
                max = n;
            }
        }

        return max;
    }
}
别再死记硬背Payload了!深入理解Flask/Jinja2 SSTI的Python对象继承链与魔术方法 本文深入解析Flask/Jinja2 SSTI漏洞的底层原理,从Python对象模型出发,详细讲解如何通过魔术方法链实现RCE。文章揭示了Python对象继承链与魔术方法的精妙设计,提供了防御与绕过SSTI漏洞的实用技巧,帮助开发者深入理解漏洞本质并采取有效防护措施。 阅读详情

相关推荐

Signoff Criteria --- ocv/aocv/pocv之AOCV介绍

Advanced on chip variation,相比较于OCV来说,对于悲观度的去除很有效。相比较与ocv对于整个design中的lauch/capture path设置统一的derate值,aocv通过将cell derate值与cell的逻辑深度以及实际的位置结合起来进行derate值的设定。那么这种derate如何能够设置到具体的cell呢,其实是我们在跑STA时候会读入相关的aocv lib file,里面有专门对相关的cell进行的aocv derate值的描述。> table: \

sinat_27691203的博客 7856

Python语法基础之可变参数

Python可变参数的具体语法以及示例代码。

Jim_Leeeee的博客 2108

【计算机科学导论实验】加法图灵机模拟 题解

本文提供计算机科学导论课程“图灵机加法器”实验的个人思路,仅供参考。

Chavapa's blog 2579

可变参数宏 及 可变参数函数

1.# 假如希望在字符串中包含宏参数,ANSI C允许这样作,在类函数宏的替换部分,#符号用作一个预处理运算符,它可以把语言符号转化程字符串。例如,如果x是一个宏参量,那么#x可以把参数名转化成相应的字符串。该过程称为字符串化(stringizing). #incldue <stdio.h> #define PSQR(x) printf("the square of" #x "is ...

EmbeddedCoder 的优快云博客 2929

一款值得关注的开源企业管理ERP系统

盒木ERP是一款开源的现代化企业管理系统,采用前后端分离架构,后端基于Python+Django,前端使用Vue+Ant Design。系统涵盖采购、销售、库存、财务等核心业务模块,支持移动端操作和PDA扫码。具有开源免费、技术先进、功能完善等特点,适合中小企业使用或二次开发。项目提供详细部署指南,支持Docker容器化部署,是学习ERP系统开发和企业数字化转型的优秀选择。

1110

在MCUXpresso上通过J-link烧写KW45

背景: KW45B是nxp 的ble npi产品,其使用的IDE为MCUXpressso或者IAR,MCUXpressso有一些bug,但是由于MCUXpressso阅读查找代码相对IAR容易,所以我经常使用的MCUXpressso进行开发。当然IAR也有其优势,比如编译、烧写速度相对MCUXpressso更快,是比较通用的一个平台,而MCUXpressso是NXP独有的。 Kw45有两种烧写方式,一是使用MCUlink,二是使用Jlink。NXP ble 产品线提供的IDE资料里有最新的15.0版本的

weixin_41889258的博客 2859

C++ —— 可变参数

总结C++实现函数可变参数的方法

m0_46329175的博客 1648

Megatron-LM深度解析:万亿参数大模型的3D并行训练之道

训练框架,采用创新的"层内模型并行"设计,通过将Transformer层的计算拆分到多个GPU上并行执行,显著提升训练效率。该系统支持3D并行策略(数据并行、张量并行、流水线并行)和序列并行等新技术,成功应用于训练5300亿参数的MT-NLG模型。相比DeepSpeed、TPU GSPMD等框架,Megatron-LM在NVIDIA GPU上展现出卓越性能,并与TensorRT等工具深度集成,形成从训练到部署的完整解决方案。该项目持续演进,已成为大模型训练的重要基准。

数据与算法架构提升之路专栏 2096

java 可变参数

Java 可变参数详解

weixin_43413307的博客 1万+

ESP32S3新手避坑:用IDF5.0驱动GT911触摸屏,我踩过的三个雷都给你填平了

本文详细解析了在ESP32S3开发板上使用IDF5.0驱动GT911触摸屏时常见的三大问题:软重启失效、状态寄存器读取异常和初始化参数差异。通过逻辑分析和硬件调试工具,提供了针对性的解决方案和优化建议,帮助开发者高效完成触摸屏驱动开发。

weixin_42567497的博客 297

Allegro如何用自带的功能将线段变成铜皮操作指导

在做PCB设计的时候,有时根据设计需要将线段变成铜皮,可以借助辅助工具来实现这一操作,但是Allegro自身也自带这个功能,如下图。勾选Delete original objects。如何用自带的功能将线段变成铜皮操作指导。勾选Convert to shape,需要把这段走线变成铜皮。

weixin_54787054的博客 2947

【C++】可变参数模板

​ ShowList函数中的逗号表达式:(PrintArg(args),0),也是按照这个执行顺序,先执行 PrintArg(args),再得到逗号表达式的结果 0。同时还用到了。

lirendada的博客 1461

学Simulink--基于电力电子变换器的建模与仿真实例:LLC谐振变换器在高频AC-DC转换中的建模

本文详细介绍了使用Simulink+Simscape Electrical对LLC谐振变换器进行建模与仿真的完整流程。LLC谐振变换器因其高效率、低噪声的特点,广泛应用于高频AC-DC转换场景。文章从背景原理出发,逐步讲解系统结构设计、建模步骤(包括AC源、整流器、LLC变换器、负载等模块搭建)、控制策略实现(固定频率/变频/PID控制)和仿真设置。通过分析仿真结果的关键指标,提出参数整定和算法优化建议。该建模方法为电力电子设计人员提供了实用的仿真工具,有助于优化LLC变换器性能,缩短开发周期。

xiaoheshang_123的博客 298

C++开发基础——可变参数与可变参数模板

C++语法基础

程序员与背包客_CoderZ 2857

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Java中可变参数方法

Java中可变参数方法 J2SE 1.5中提供了Varargs机制,允许直接定义能和多个实参相匹配的形参。从而,可以用一种更简单的方式,来传递个数可变的实参。 Varargs的含义 大体说来,“Varargs”是“variable number of arguments”的意思。有时候也被简单的称为“variable arguments”,不过因为这一种叫法没有说明是什么东西可变,所以意义稍...

Mr.Phoebe的专栏 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

C++可变参数

c语言风格使用可变参数,c++11使用可变参数模板:递归展开,初始化列表展开,折叠表达式展开

异样旧日的博客 1300

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

可变参数及可变参数宏的使用

我们在C语言编程中会遇到一些参数个数可变的函数,例如printf()这个函数,这里将介绍可变函数的写法以及原理. * 1. 可变参数的宏 一般在调试打印Debug 信息的时候, 需要可变参数的宏. 从C99开始可以使编译器标准支持可变参数宏(variadic macros), 另外GCC 也支持可变参数宏, 但是两种在细节上可能存在区别. 1. __VA_ARGS__ __

Sakaue的专栏 6103

Java中可变参数

最近在读《clean code》,想规范一下自己的编码。有一些概念重新回顾一下,遂在此作为记录。 一、什么是可变参数 可变参数:本质就是动态 创建的数组。 // 可变参数,形参列表可以接受0个值,也可以接受n个值。 修饰符 返回值类型 方法名(数据类型…变量名){ 方法体...

Evan's Blog ٩(๑❛ᴗ❛๑)۶ 2581

python可变参数的定义_Python函数可变参数

Python函数可变参数教程在Python 中函数的可变参数又被称为不定长参数,Python 中的可变参数不是必须是函数的最后一个参数,但如果不是函数的最后一个参数,那么普通参数必须使用Python 中定义可变参数有两种形式,分别为:形参前添加一个 * 和形参前添加两个 *。Python函数可变参数定义详解语法def func_name(param1, *params):pass参数参数描述def...

weixin_39640090的博客 1870

Go语言 可变参数

最近与同事讨论时,提到Go语言的可变参数,之前没有总结过相关知识点,今天我们介绍一下Go语言的可变参数。 可变参数(Variable Parameters):参数数量可变的函数称之为可变参数函数,主要是在使用语法糖(syntactic sugar)。最经典的例子就是fmt.Printf()和类似的函数,fmt.Printf首先接收一个参数,后面可接收若干个参数。 实例一: func1使用的是...

数据与工程工作,AI大模型应用 1496

golang:可变参数

可变参数类型 可变参数是指函数传入的参数个数是可变的,为了做到这点,首先需要将函数定义为可以接受可变参数的类型: func myfunc(args ...int) { for _, arg := range args { fmt.Println(arg) } } 上面这段代码的意思是,函数 myfunc() 接受不定数量的参数,这些参数的类型全部是 int,所以它可以用如下方式调用: myfunc(2, 3, 4) myfunc(1, 3, 7, 13) 形如…type格

OceanStar的博客 1943
上一篇: 黑马Java测试题错题归纳
下一篇: Oracle数据库中分页排序
github_34013496
博客等级 码龄11年 1粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值