java如何实现不固定个数传参
CreateTime--2017年9月15日14:42:40
Author:Marydon
java如何实现不固定个数传参(定义实参个数可变的方法)
参考链接:原文链接
传统方法:为这个方法定义一个数组型的参数,将不确定的参数放到数组中,把这个数组作为一个实参传递过去
举例:
// 定义带有数组型参数的方法
int getSum(int[] params) { }
// 调用
getSum(1,2,3);
方法:借助Varargs机制
J2SE 1.5提供了“Varargs”机制。借助这一机制,可以定义能和多个实参相匹配的形参。从而,可以用一种更简单的方式,来传递个数可变的实参;
Varargs:"variable number of arguments"
举例:
/**
* 求和
* @description
* 定义实参个数可变
* @param params
* >=0个int类型实参
* @return
*/
static int getSum(int... params) {
// 和
int sum = 0;
for (int i : params) {
sum += i;
}
return sum;
} // 调用
int sum = Test.getSum(1,2,3);
System.out.println(sum); //
注意事项:
1.java不支持泛型数组,当数组元素类型不确定时,可以使用Object来定义该数组的数据类型;
2.不能确定的参数个数的方法在定义时,该形参必须放在方法的最后一个参数;
否则,编译报错:The variable argument type int of the method getSum must be the last parameter
3.不能再为这个类定义一个和转化后的方法签名一致的方法;
否则,编译报错:Duplicate method getSum(int[]) in type Test
原因:在class文件编译时实际上将匹配不确定个实参的形参,转化为数组形参,即
static int getSum(int[] params) {
// 和
int sum = 0;
for (int i : params) {
sum += i;
}
return sum;
}
4.传0个实参时,传递过去的是一个空数组,而不是null;
5. 传统方式与这种方式的区别在于:这种方式传参时不必将参数先封装到一个数组里面。
java如何实现不固定个数传参的更多相关文章
- 【JS学习笔记】函数传参
比如仅仅改变背景的颜色 函数传参:参数就是占位符. 那么在什么时候用传参呢?函数里定不下来的东西. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1 ...
- 如何在JAVA中实现一个固定最大size的hashMap
如何在JAVA中实现一个固定最大size的hashMap 利用LinkedHashMap的removeEldestEntry方法,重载此方法使得这个map可以增长到最大size,之后每插入一条新的记录 ...
- c# 内存的具体表现- 通用类型系统 深拷贝 浅拷贝 函数传参
c# 通用类型系统 及变量在 深拷贝 浅拷贝 函数传参 中的深层次的表现 在编程中遇到了一些想不到的异常,跟踪发现,自己对于c#变量在内存上的表现理解有偏差,系统的学习并通过代码实验梳理了各种情况下, ...
- pytest文档14-函数传参和firture传参数request
前言 为了提高代码的复用性,我们在写用例的时候,会用到函数,然后不同的用例去调用这个函数. 比如登录操作,大部分的用例都会先登录,那就需要把登录单独抽出来写个函数,其它用例全部的调用这个登陆函数就行. ...
- python笔记之强制函数以关键字参数传参
最近学习python,学到了函数传参,看到了以下这个特殊情况,特此来做个笔记 def add(*, x, y): print(x, y) 以上函数定义后,该怎么传参?前面的那个*号是做什么用的? 我们 ...
- 函数传参,改变Div任意属性的值&&图片列表:鼠标移入/移出改变图片透明度
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- x64汇编第三讲,64位调用约定与函数传参.
目录 x64汇编第三讲,64位调用约定与函数传参. 一丶复习X86传参 二丶x64汇编 2.1汇编详解 x64汇编第三讲,64位调用约定与函数传参. 一丶复习X86传参 在x86下我们汇编的传参如下: ...
- java类,函数传参
1 package 传参练习; 2 //学生姓名组成的数组:指定区间和查找的名字返回此人是否存在(如果存在返回位置否则-1) 3 public class test1 { 4 public stati ...
- Java 第11章 类的无参方法
类的无参方法 类的方法由哪几部分组成? 方法的定义: 1.访问权限修饰符 2.方法返回的数据类型 3.方法的名称 4.方法的主体 成员变量和局部变量的区别有那些? ~ 作用域不同 - 成员变量的作用域 ...
随机推荐
- Mac下的Docker及Kubernetes(k8s)本地环境搭建与应用部署、管理界面kubernetes-dashboard
mac安装docker: brew cask install docker 当然也可以直接去官网下载docker的pkg文件安装 mac的docker国内镜像:网易的镜像地址:http://hub-m ...
- Spring Data JPA @Column 注解无效 打出的语句有下划线
最近再写一个Restful API的小例子,遇到这样一个问题,在Spring Boot 下使用CrudRepository,总是提示如下错误: Caused by: java.sql.SQLSynta ...
- java将XML文档转换成json格式数据
功能 将xml文档转换成json格式数据 说明 依赖包:1. jdom-2.0.2.jar : xml解析工具包;2. fastjson-1.1.36.jar : 阿里巴巴研发的高性能json工具包 ...
- Java NIO: Non-blocking Server
Even if you understand how the Java NIO non-blocking features work (Selector, Channel, Buffer etc.), ...
- verilog语法实例学习(1)
本文档中通过verilog实例来学习verilog语法.Verilog是一种硬件描述语言,它具有并发性和时序性.并发性是指不同硬件模块的同时操作,时序性是指信号的赋值或操作在时钟的边沿进行.由于作者本 ...
- 样条之埃特金(Aitken)逐步插值函数
核心代码: ////////////////////////////////////////////////////////////////////// // 埃特金逐步插值 //////////// ...
- 我眼中的SCRUM
回顾一下我所认识的scrum,算是对自己知识的一个梳理. scrum到底是什么,书中都说,它不是方法学,不是过程,而是一个框架.我并没有太理解这句话,所以先把scrum中都有些什么来说一下(可跟前一篇 ...
- ajax file upload 修改
先前 写过 JS 判断上传 文件 大小 后来发现一个问题, 就是单页面运行 js 没有问题, 但是基础呢个到项目中 有些时候 obj_img.dynsrc = file.value; 报错说没有 权限 ...
- zookeeper基础知识整理
http://blog.csdn.net/pelick/article/details/7269670 http://zookeeper.apache.org/doc/trunk/javaExampl ...
- mahout安装
mahout是hadoop的一种高级应用.运行mahout需要提前安装好hadoop.hadoop的安装网上很多.而且也不复杂,这里不再讲述.这里默认hadoop已经安装完成. 1:下载二进制解压安装 ...