有时候遇见一个方法有不确定参数个数的情况。
一般我们会用方法重载来解决问题:

 //方法重载,解决参数个数不确定问题
public void method();
public void method(int i);
public void method(int i, int j);
public void method(int i, int j, int k);

但是当参数多的时候就会显得很繁琐,同时每次扩展都会很麻烦。于是我们可以使用数组作为参数:

int[] a={1, 2, 3, 4};    //想要多少个自己搞
public void method(int[] args);

但是这样还是有个准备参数的过程(要构造一个数组)。于是我们可以使用不定项参数(可变参数)的方式:

public void method(int...args);   //就是省略号,格式就是这样

解决了参数个数不确定的问题。

使用方式:

如果我们调用上面的method方法,如下:

public static void main(String[] args){method();    method(null);method(1,2);method(1,2,3);method(1,2,3,4,5,6,7,8,9);        //不同的参数个数,但是调用的都是同一个method方法
}

int...args的参数形式能实现不定项参数实质上是因为变量args是一个数组
例如:

public static void method(int...arg){for(int i=0; i<arg.length; i++)System.out.println(arg[i]);
}public static void main(String[] args){method(1, 2, 3, 4);int[] a={1, 2, 3, 4};method(a);                        //这两种使用方法输出同样的结果,所以不定项参数兼容数组
}

所以,不定项参数可以理解为数组。所以:

public void method(int[]...arg);
//相当于是二维数组,arg中每个空间保存一个数组
public void method(int...args);
public void method(int[] args);      //编译无法通过,因为本质上是一样的无法完成重载

注意事项:

1)不定项参数必须放在参数列表最后一个

2)不定项参数只能有一个(多个,必然有一个不是最后一个)。

3)重载时,运行优先级问题

Java中不定项参数(可变参数)的作用和使用方式相关推荐

  1. 默认参数,命名参数,可变参数

    文章目录 默认参数 命名参数 可变参数 默认参数 def sayName(name:String="PK"): Unit ={//此处默认参数为PKprintln(name)}sa ...

  2. js中的if与Java中的if_JS直接if参数的用法JS中!和!!区别

    经常在JS中见一些代码直接if(参数),然后参数调用的时候是将元素自己传下去.例如下面代码: functiontest1(obj){if(obj){ alert($(obj).val()); }els ...

  3. Java中的System.getProperty()设置参数的方法

    ■前言 今天调查代码时,发现有一行代码如下, System.getProperty("authPasswd")://Key值是随便写的,不过确实是一个密码字段 在代码中,没有发现任 ...

  4. java中形式参数改变,实际参数会发生变化吗

    java中,基本数据类型传递的是值,引用数据类型传递的是地址 经典例题一个 class Demo {public static void main(String[] args) {int a = 10 ...

  5. python可变参数和关键字参数位置_python 参数笔记 -- 位置参数 关键字参数 命名参数 形式参数 默认参数 可变参数 可选参数 位置顺序...

    这么多名称,python到底有几种参数: 2种:普通参数(即位置参数,靠位置先后来指定参数),关键字参数(即命名参数,靠名字来指定参数). 常说的可变参数也就是普参的集合,*args. 常说的关键字参 ...

  6. python函数的参数-可变参数,关键字参数

    # -*- coding: utf-8 -*- #coding=utf-8 ''' @author: tomcat @license: (C) Copyright 2017-2019, Persona ...

  7. java string char数组_String在Java中真的是不可变吗?

    我们都知道 Java 中的 String 类的设计是不可变的,来看下 String 类的源码. public final class Stringimplements java.io.Serializ ...

  8. java short long_谈谈Java中整数类型(short int long)的存储方式

    在java中的整数类型有四种,分别是 byte  short int long 其中byte只有一个字节 0或1,在此不详细讲解. 其他的三种类型如下: 1. 基本类型:short 二进制位数:16 ...

  9. Java中继承、接口、多态的作用详解(纯理论)

    一.继承.接口与多态的相关问题: 1. 继承的作用?好处?坏处? 继承:通过继承实现代码复用.Java中所有的类都是通过直接或间接地继程java.lang.Object类得到的.继承而得到的类称为子类 ...

最新文章

  1. Windows 7各版本主要区别
  2. 【机器学习入门笔记10:TensorFlow矩阵基础】20190217
  3. Intel Realsense D435 python (Python Wrapper)example -1: quick start (快速开始)
  4. 软件工程心理学之1----开篇
  5. java定义一个方法,返回一个整数数组的元素最小值
  6. appSettings 配置mysql_app.config数据库配置字符串的三种取法
  7. 监督学习 | 集成学习 之AdaBoost、梯度提升及Slearn实现
  8. 结合中国古典文化取名 华为意在把传说化为现实奇迹
  9. eclipse安装Maven插件M2E
  10. cartographer attempt to index global ‘SPARSE_POSE_GRAPH‘ (a nil value)
  11. 第八届蓝桥杯第六题最大公共子串
  12. java nutch 爬虫_Java分布式爬虫Nutch教程——导入Nutch工程,执行完整爬取
  13. c#文件排序和文件夹排序
  14. Android 长按Menu键的监听
  15. 软件工程——题目及原型设计
  16. 使用苹果发布证书打包好的ipa如何安装到ios手机上测试
  17. Mendeley中WordPlugin问题
  18. 【WIN7系统不是万能滴】
  19. eva破晓服务器无响应,EVA破晓黑屏怎么办 EVA破晓黑屏、已停止解决方案[图]
  20. 软件的升级及卸载原理

热门文章

  1. Java8实战学习笔记(三)——函数式数据处理
  2. 多种方法解决docker无权限问题 /var/run/docker.sock: connect: permission denied
  3. Beta冲刺(8/7)——2019.5.30
  4. 计算机桌面帐号的设置,Windows电脑桌面云便签个性账号怎么设置?
  5. linux command line 利用Entrez Direct下载NCBI数据
  6. Avaya陈蔚:新技术优化保险业务流程
  7. P - 改革春风吹满地
  8. 经验分享:如何零基础开始自学Python编程(上)
  9. 【微信小程序控制硬件15 】 重认识无线物联网的配网协议,了解腾讯物联蓝牙协议LLSync SDK,腾讯连连小程序也可以蓝牙配网了。
  10. Activity A 跳转到Activity B 生命周期