形式:类型... 参数名

示例:public void show(int... a) {};

可变参数在方法中被当作数组来处理

可变参数传值的四种方式:

  • 一个值也不传,可变参数会接收到长度为0的数组
  • 传null,可变参数会接收到null
  • 传数组,可变参数会接收到数组
  • 传1个到多个数组元素值,可变参数会接收到数组
public class Test {

    public void changeParam(int... a) {
System.out.println("数组长度为:" + a.length);
} public static void main(String[] args) {
Test m1 = new Test(); //一个值都不传递
m1.changeParam();
//传数组对象
m1.changeParam(new int[]{5,7,9,1});
//传多个元素值,会当成数组处理
m1.changeParam(1,2,3,4,5);
//传null,但是这个参数不可用
m1.changeParam(null);
}
}

可变参数和数组作为方法参数时的区别:

从个数来看,可变参数只能有一个,数组可以有多个

从定义位置来看,可变参数只能定义在参数列表的末尾,数组可以在任何位置

从传参的形式来看,可变参数可以传数组、null、0个参数、一到多个参数,数组可以传数组引用、数组对象、null

方法重载:方法名相同,但是参数列表不一致,重载的方法会根据参数来匹配调用

public class Test {

    public void show(int a) {
System.out.println("带有一个参数的方法");
}
public void show(int... a) {
System.out.println("带有可变参数的方法");
} public static void main(String[] args) {
Test m1 = new Test(); //public void show(int... a)
m1.show();
//public void show(int a)
m1.show(6);//优先调用参数匹配的方法
//public void show(int... a)
m1.show(new int[]{5,7,9,1});
//public void show(int... a)
m1.show(1,2,3,4);
}
}

Java 传递可变参数和方法重载的更多相关文章

  1. JavaSE 可变参数的方法重载

    /** * 可变参数的方法重载 */ class A { public void test(int a, int b) { System.out.println(a+", "+b) ...

  2. [改善Java代码]避免带有变长参数的方法重载

    建议4: 避免带有变长参数的方法重载 在项目和系统的开发中,为了提高方法的灵活度和可复用性,我们经常要传递不确定数量的参数到方法中,在Java 5之前常用的设计技巧就是把形参定义成Collection ...

  3. 巩固java(六)----java中可变参数方法(非常实用哦)

    java提供了可变参数的方法,即方法的参数个数可以不确定,用"..."定义. import java.util.ArrayList; import java.util.List; ...

  4. [问题记录]Java关于可变参数重载问题的测试

    突然发现java的可变参数重载是存在歧义的,只是不知道java内部是怎么处理的,特意做如下实验: 测试代码如下: /** * Created by ieayoio on 16-3-1. */ publ ...

  5. 五分钟学Java:可变参数究竟是怎么一回事?

    在逛 programcreek 的时候,我发现了一些专注基础但不容忽视的主题.比如说:Java 的可变参数究竟是怎么一回事?像这类灵魂拷问的主题,非常值得深入地研究一下. 我以前很不重视基础,觉得不就 ...

  6. Java中可变参数

    从java5开始出现了可变参数,这是对java方法及数组的拓展! 方法中可以接受的参数不再是固定个数的,而是随着具体需求传递的多少来决定. 定义格式: 返回值类型  方法名(参数类型 ... 形式参数 ...

  7. java——慎用可变参数列表

    说起可变参数,我们先看下面代码段,对它有个直观的认识,下方的红字明确地解释了可变参数的意思: public class VarargsDemo{ static int sum(int... args) ...

  8. JDK5新特性之 可变参数的方法

    可变参数的方法:不知道这个方法该定义多少个参数 注意: > 参数实际上是数组 > 必须写在参数列表最后一个 package cn.itcast.day24.varparam; import ...

  9. Java 中可变参数

    可变参数 Java 中可变参数 现在需要编写一个求和的功能,但是不知道有几个参数,在调用的时候才知道有几个参数,请问这如何实现呢? Java 给我们提供了一个 JDK 1.5 的新特性---可变参数 ...

随机推荐

  1. Spring Cloud 微服务开放平台接口

    github源码地址:https://github.com/spring-cloud/spring-cloud-security 前言: 什么是开放平台接口 场景 : 总公司与子公司 对接接口  还有 ...

  2. nginx重新加载配置(不停服)

    RT,改变配置想让它生效而不停止服务,如下两种方式都可以: 1) nginx -t;  nginx -s reload2) nginx -t;  kill -HUP

  3. Remove Duplicates from Sorted List ,除去链表中相邻的重复元素

    Remove Duplicates from Sorted List : Given a sorted linked list, delete all duplicates such that eac ...

  4. rabbitmq High Availability

    每个rabbitmq node运行RabbitMQ application,共享用户virtual hosts, queues, exchanges, etc. 一个nodes组称之为一个集群. 所有 ...

  5. vue组件化开发-vuex状态管理库

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.Vuex 也集成到 Vue 的官方调试工具 ...

  6. 十一 web爬虫讲解2—Scrapy框架爬虫—Scrapy使用

    xpath表达式 //x 表示向下查找n层指定标签,如://div 表示查找所有div标签 /x 表示向下查找一层指定的标签 /@x 表示查找指定属性的值,可以连缀如:@id @src [@属性名称= ...

  7. Vue学习手札

    HTML 特性是不区分大小写的.所以,当使用的不是字符串模板,camelCased (驼峰式) 命名的 prop 需要转换为相对应的 kebab-case (短横线隔开式) 命名: Vue.compo ...

  8. 【poj2553】The Bottom of a Graph(强连通分量缩点)

    题目链接:http://poj.org/problem?id=2553 [题意] 给n个点m条边构成一幅图,求出所有的sink点并按顺序输出.sink点是指该点能到达的点反过来又能回到该点. [思路] ...

  9. struts转换器

    struts转换器:在B/S应用中,将字符串请求参数转换为相应的数据类型,是MVC框架提供的功能,而Struts2是很好的MVC框架实现者,理所当然,提供了类型转换机制. 一.类型转换的意义 对于一个 ...

  10. python基础之字符编码(一)

    一.什么是字符编码 计算机要想工作必须通电,也就是说‘电’驱使计算机干活,而‘电’的特性,就是高低电压(高低压即二进制数1,低电压即二进制数0),也就是说计算机只认识数字 编程的目的是让计算机干活,而 ...