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

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

运行结果如下:

最大值:-2147483648
最大值:7
最大值:5
比number大的数的个数:3
比number大的数的个数:3

从上面代码可以看出:

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

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

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

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

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

c.可以传入一个数组;

继续往下看:

public class VariableParameter {

    public void comp(int... items){
System.out.println("1");
} public void comp(int item1,int item2){
System.out.println("2");
} public static void main(String[] args) {
VariableParameter vp = new VariableParameter();
vp.comp(1, 2); } }

运行结果:

2

由此可以看出:

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

继续:

public class VariableParameter {

    public void comp(int... items){
System.out.println("1");
} public void comp(int[] items){ //会报错:Duplicate method comp(int[]) in type VariableParameter
System.out.println("2");
} public static void main(String[] args) { } }

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

public class VariableParameter {

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

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

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



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

最新文章

  1. grails项目获取前后台的值
  2. [Android]关于Installation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED ,修改包名
  3. 如何申请国际版Office365和Azure的试用账号
  4. Python学习之路--进程,线程,协程
  5. TFS简介
  6. Node.js异常处理
  7. 移除Ubuntu“下载额外数据不成功”的提示通知
  8. News feed
  9. android 多媒体数据库详解
  10. S性能 Sigmoid Function or Logistic Function
  11. GD库 图片缩略图 图片水印
  12. Ansible4:Ad-hoc与命令执行模块【转】
  13. Error 0xC00000FD: Stack overflow 之 更改堆栈保留大小
  14. linux_sudo命令
  15. Just Oj 2017C语言程序设计竞赛高级组E: DATE ALIVE(二分匹配)
  16. Python 全栈开发十一 深浅拷贝
  17. hadoop 日常问题汇总(持续更新)
  18. RabbitMQ服务端配置详解(转自:http://www.cnblogs.com/zhen-rh/p/6884297.html)
  19. latex 转word
  20. nexus docker 私有镜像处理

热门文章

  1. Objective-C 是如何慢慢走红的?
  2. java并发容器(Map、List、BlockingQueue)
  3. 双机热备ROSE HA工作原理
  4. TensorFlow学习记录(一)
  5. OSG嵌入QT(QT界面使用Qt Designer编辑)
  6. Spark---架构原理
  7. Spring Boot @Async 异步任务执行
  8. Ubuntu16.04下安装Hive
  9. web 文件下载(.shp)
  10. MySQL远程链接