java提供了可变参数的方法,即方法的参数个数可以不确定,用"..."定义。

  1. import java.util.ArrayList;
  2. import java.util.List;
  3.  
  4. public class VariableParameter {
  5.  
  6. //求若干个整型数中的最大值
  7. public int getMax(int... items){ //定义可变参数items
  8.  
  9. int max = Integer.MIN_VALUE; //次数为int能表示的最小值,值为-2147483648
  10. for(int item : items){
  11. max = item > max? item : max; //取大值
  12. }
  13. return max;
  14. }
  15. //返回比number大的数的个数
  16. public int getLagerNum(int number,int... items){ //若除了可变长参数还有其它参数,可变长参数一定要放在最后
  17. int sum = 0;
  18. for(int item : items){
  19. if(item > number){
  20. sum++;
  21. }
  22. }
  23. return sum;
  24. }
  25.  
  26. public static void main(String[] args) {
  27. VariableParameter vp = new VariableParameter();
  28. System.out.println("最大值:"+vp.getMax()); //可以不写参数
  29. System.out.println("最大值:"+vp.getMax(2,1,4,7,2,-1,3,3)); //可以在参数中直接写入若干个参数
  30. System.out.println("最大值:"+vp.getMax(-1,4,5,0,1)); //可以在参数中直接写入若干个参数
  31.  
  32. System.out.println("比number大的数的个数:"+vp.getLagerNum(9, 1,11,5,14,-1,9,21)); //9为number,后边的是items
  33. int a[] = new int[] {1,11,5,14,-1,9,21};
  34. System.out.println("比number大的数的个数:"+vp.getLagerNum(9,a)); //items也可以用数组替代
  35.  
  36. }
  37.  
  38. }

运行结果如下:

  1. 最大值:-2147483648
  2. 最大值:7
  3. 最大值:5
  4. number大的数的个数:3
  5. number大的数的个数:3

从上面代码可以看出:

1.在方法中定义可变参数后,我们可以像操作数组一样操作该参数;

2.如果该方法除了可变参数还有其它的参数,可变参数必须放到最后;

3.调用使用了可变参数的方法时:

a.可以不写参数,即传入空参;

b.可以直接在里边写入参数,参数间用逗号隔开;

c.可以传入一个数组;

继续往下看:

  1. public class VariableParameter {
  2.  
  3. public void comp(int... items){
  4. System.out.println("1");
  5. }
  6.  
  7. public void comp(int item1,int item2){
  8. System.out.println("2");
  9. }
  10.  
  11. public static void main(String[] args) {
  12. VariableParameter vp = new VariableParameter();
  13. vp.comp(1, 2);
  14.  
  15. }
  16.  
  17. }

运行结果:

  1. 2

由此可以看出:

4.拥有可变参数的方法可以被重载,在被调用时,如果能匹配到参数定长的方法则优先调用参数定长的方法。

继续:

  1. public class VariableParameter {
  2.  
  3. public void comp(int... items){
  4. System.out.println("1");
  5. }
  6.  
  7. public void comp(int[] items){ //会报错:Duplicate method comp(int[]) in type VariableParameter
  8. System.out.println("2");
  9. }
  10.  
  11. public static void main(String[] args) {
  12.  
  13. }
  14.  
  15. }

当试图使用数组作为参数去实现重载时,会报错,说明可变参数与数组冲突,但是:

  1. public class VariableParameter {
  2.  
  3. public void comp(int[] items){ //会报错:Duplicate method comp(int[]) in type VariableParameter
  4. System.out.println("2");
  5. }
  6.  
  7. public static void main(String[] args) {
  8. VariableParameter vp = new VariableParameter();
  9. vp.comp(1,2,3,4); //The method comp(int[]) in the type VariableParameter is not applicable for the arguments (int, int, int, int)
  10. }
  11.  
  12. }

如果定义一个参数为数组的方法,像调用可变参数的方法一样调用它是会报错,说明可变参数并不是一个数组,由此我们可以总结出:

5:可变参数可以兼容数组参数,但数组参数无法兼容可变参数。

  1.  

版权声明:本文为博主原创文章,未经博主允许不得转载。

巩固java(六)----java中可变参数方法(非常实用哦)的更多相关文章

  1. java 使用反射调用可变参数方法

    使用反射操作对象-调用可变参数方法 要把可变参数都当做是其对应的数组类型参数; 如 show(XX... is)作为show(XX[] is)调用; 若可变参数元素类型是引用类型: JDK内部接收到参 ...

  2. C# 中的可变参数方法(VarArgs)

    首先需要明确一点:这里提到的可变参数方法,指的是具有 CallingConventions.VarArgs 调用约定的方法,而不是包含 params 参数的方法.可以通过MethodBase.Call ...

  3. Java 中可变参数

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

  4. 编写Java程序,通过给定可变参数方法,计算任意给定的多个int类型数据之和

    返回本章节 返回作业目录 需求说明: 通过给定可变参数方法,计算任意给定的多个int类型数据之和. 实现思路: 定义可变形参方法,参数类型是int类型. 定义变量 sum 接受最终的和. 通过 for ...

  5. Java 8 接口中的默认方法与静态方法

    Java 8 接口中的默认方法与静态方法 1. 接口中的默认方法 允许接口中包含具有具体实现的方法,该方法称"默认方法",默认方法使用用 default 关键字修饰. public ...

  6. java基础-java与c#的可变参数

    正文 可变参数,必须最为参数的最后一个参数:可变参数只能有一个: c#可变参数例子:       class Program { static void Main(string[] args) { T ...

  7. java获取request中的参数、java解析URL问号后的参数

    java获取request中的参数.java解析URL问号后的参数.有时候我们需要从request中获取参数,或者获取拼接在Url后面的参数,有时候一个一个去拿有点麻烦,一起拿出来放在一个map里面需 ...

  8. 2017.10.28 针对Java Web应用中错误异常处理方法的运用

    针对Java Web应用中错误异常处理方法的运用 在javaweb中其异常都需要对Checked Exception之下的Exception进行继承,并且有选择地对发生的错误和异常进行处理.Java同 ...

  9. java.nio.Buffer 中的 flip()方法

    在Java NIO编程中,对缓冲区操作常常需要使用  java.nio.Buffer中的 flip()方法. Buffer 中的 flip() 方法涉及到 Buffer 中的capacity.posi ...

随机推荐

  1. linux中syscall调用号查看

    可以用locate查找: locate unistd_32 //或者 locate unistd_64 以下是本猫在ubuntu下返回的结果: /usr/src/linux-headers-3.16. ...

  2. pyqt5 动画在QThread线程中无法运行问题

    自己做了一个tcp工具,在学习动画的时候踩了坑,需求是根据上线变绿色,离线变灰色,如果连接断开了,则变为灰色 问题现象: 可以看到点击"连接","离线"的时候动 ...

  3. linux系统安装mysql数据库

    1.首先关闭linux的防火墙,执行命令 chkconfig iptables off 2.从mysql官网上下载自己适合的mysql版本https://dev.mysql.com/downloads ...

  4. PHP基础(一)--字符串函数大盘点(基础篇)

    参考地址http://php.net/manual/zh/ref.strings.php addcslashes - 以 C 语言风格使用反斜线转义字符串中的字符    string addcslas ...

  5. 建站记录:设置apache .htaccess文件给网站添加404错误处理页面

    有些空间服务商会在后台设置中,提供这个选项,可以直观地设置404错误指向的页面,这一点很方便,比如我之前用的阿里云虚拟主机就可以在控制台直接设置. 新租用的香港主机后台没有找到选取文件的地方,只是可以 ...

  6. 黄文俊:Serverless小程序后端技术分享

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 黄文俊,现任腾讯云SCF无服务器云函数高级产品经理,多年企业级系统开发和架构工作经验,对企业级存储.容器平台.微服务架构.无服务器计算等领域 ...

  7. Combination Sum Two

    Description: Given a collection of candidate numbers (C) and a target number (T), find all unique co ...

  8. PHP中的 $_SERVER 函数说明详解

    用php在开发软件的时候,我们经常用到 $_SERVER[]这个函数,今天就来讲下这个数组的值,方便以后使用: A: $_SERVER['ARGC'] #包含传递给程序的 命令行参数的个数(如果运行在 ...

  9. DevOps之二 Maven的安装与配置

    CentOS7 安装Maven 一.安装Maven mkdir -p /usr/local/maven3wget http://mirrors.hust.edu.cn/apache/maven/mav ...

  10. 二叉树,AVL树和红黑树

    为了接下来能更好的学习TreeMap和TreeSet,讲解一下二叉树,AVL树和红黑树. 1. 二叉查找树 2. AVL树 2.1. 树旋转 2.1.1. 左旋和右旋 2.1.2. 左左,右右,左右, ...