对Java中可变参数的理解
说明
可变参数:是DK1.5之后出现的新特性,其实可变参数是0、1、2、3、....个参数的数组
使用前提
当方法的参数列表数据类型已经确定,但是参数的个数不确定,就可以使用可变参数
使用格式
修饰符 返回值类型 方法名(数据类型 ... 变量名) { 方法内容区 }
可变参数的原理
可变参数底层就是一个数组,根据传递参数个数不同,会创建不同长度的数组,来存储这些参数传递的参数个数,可以是0个(不传递)、1、2、3......多个。
例子
import java.util.Arrays;
public class VariableParameters {
public static void main(String[] args) {
method(1, 2, 3, 4, 5);
}
public static int method(int ... ints) {
System.out.println("可变参数(数组):" + Arrays.toString(ints));
System.out.println("可变参数(数组)长度,即数组元素个数:" + ints.length);
return 0;
}
}
输出结果:
可变参数(数组):[1, 2, 3, 4, 5]
可变参数(数组)长度,即数组元素个数:5
注意事项
1、一个方法的参数列表,只能有一个可变参数
2、一个方法的参数列表中有多个不同的参数时,可变参数要放在其他所有参数的后面

如上图:只有一个可变参数,抛出错误(可变参数,必须在参数列表最后)

如上图:有两个可变参数,还是抛出同样的错误(可变参数,必须在参数列表最后),也就是说只能有一个可变参数
可变参数的特殊写法
public static void method(Object o) {
}
// 在不知道要传入什么类型的参数时,可以使用Object,Object可以接收任意数据类型的参数
对Java中可变参数的理解的更多相关文章
- Java 中可变参数
可变参数 Java 中可变参数 现在需要编写一个求和的功能,但是不知道有几个参数,在调用的时候才知道有几个参数,请问这如何实现呢? Java 给我们提供了一个 JDK 1.5 的新特性---可变参数 ...
- 巩固java(六)----java中可变参数方法(非常实用哦)
java提供了可变参数的方法,即方法的参数个数可以不确定,用"..."定义. import java.util.ArrayList; import java.util.List; ...
- 18、Java中可变参数
从JDK 1.5之后,Java允许定义形参可变的参数 例如: public void test(int a,String ... books){ for(String book:books){ Sys ...
- Java中可变参数
从java5开始出现了可变参数,这是对java方法及数组的拓展! 方法中可以接受的参数不再是固定个数的,而是随着具体需求传递的多少来决定. 定义格式: 返回值类型 方法名(参数类型 ... 形式参数 ...
- java中可变长参数
** * Created by Lenovo on 2017/12/10. * java中可变长参数 */ public class reflect04 { //m1有一个int类型的可比变长参数 / ...
- C语言中可变参数的函数(三个点,“...”)
C语言中可变参数的函数(三个点,“...”) 本文主要介绍va_start和va_end的使用及原理. 在以前的一篇帖子Format MessageBox 详解中曾使用到va_start和va_end ...
- java中线程同步的理解(非常通俗易懂)
转载至:https://blog.csdn.net/u012179540/article/details/40685207 Java中线程同步的理解 我们可以在计算机上运行各种计算机软件程序.每一个运 ...
- 五分钟学Java:可变参数究竟是怎么一回事?
在逛 programcreek 的时候,我发现了一些专注基础但不容忽视的主题.比如说:Java 的可变参数究竟是怎么一回事?像这类灵魂拷问的主题,非常值得深入地研究一下. 我以前很不重视基础,觉得不就 ...
- c 中可变参数的实现
我们在C语言编程中有时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为: 例一: int printf( const char* format, ... ...
随机推荐
- Java语法格式
任何一种语言都有自己的语法规则,Java也一样,既然是规则,那么知道其如何使用就可以了. 代码都定义在类中,类由class来定义,区分 public class 和 class; 代码严格区分大小 ...
- 【mac】Mac 终端如何切换成管理员用户
方法1.打开终端输入 sudo su 然后回车 Password: ------(输入root密码即可) sh-3.2# -------- (输入执行的命令即可,例如 npm i -g np ...
- The Function() Constructor
Functions are usually defined using the function keyword, either in the form of a function definitio ...
- springboot配置大全
此配置大全是在官方开发者文档中看到的,地址:https://docs.spring.io/spring-boot/docs/1.5.6.RELEASE/reference/html/common-ap ...
- springboot+nginx+https+linux实现负载均衡加域名访问简单测试
把springboot项目打包成三个jar包,并指定端口为 14341,14342,14343 下载腾讯云免费ssl证书,解压后会出现如下图文件夹 把nginx文件夹下的 .crt 和 .key文件复 ...
- linux 操作 I/O 端口
在驱动硬件请求了在它的活动中需要使用的 I/O 端口范围之后, 它必须读且/或写到这些 端口. 为此, 大部分硬件区别 8-位, 16-位, 和 32-位端口. 常常你无法混合它们, 象你 正常使 ...
- jquery核心基础
jquery对对象的操作: 检查对象类型: 老式的javascript使用typeOf()操作符,但他是不符合逻辑的,在某些情况下,typeOf()返回的不是一个正确的值,或者返回一个出乎意料的值 ...
- 使用 koa-router 路由拆分
根据功能不同,将路由拆分到不同的模块 目录结构: app.js const Koa = require('koa'); const Router = require('koa-router'); co ...
- 10款Web前端工具
10款让Web前端开发人员生活更轻松的实用工具.每个Web开发人员都有自己的工具箱,这样工作中碰到的每个问题都有一个好的解决方案供选择. 对于每一项工作,开发人员需要特定的辅助工具,所以如果下面这些工 ...
- 第二阶段:1.流程图:12.AXURE绘制页面流程图
注意的事项: 完整的页面流程图