Java方法中的可变参数类型,也称为不定参数类型,是一个非常重要的概念

举栗子

public class TestVarArgus {
public static void dealArray(int... intArray) {
for (int i : intArray)
System.out.print(i + " "); System.out.println();
} public static void main(String args[]) {
dealArray();
dealArray(1);
dealArray(1, 2, 3);
}
} 输出: 1
1 2 3

类似数组?

和数组很像,其实就是。编译器会在悄悄地把这最后一个形参转化为一个数组形参,并在编译出的class文件里作上一个记号,表明这是个实参个数可变的方法

dealArray();//dealArray(int[] intArray{});
dealArray(1);//dealArray(int[] intArray{1});
dealArray(1,2,3);//dealArray(int[] intArray{1, 2, 3});

和数组方法在一起无法重载。说明参数类型一致。

public static void dealArray(int... intArray) {

}

public static void dealArray(int[] intArray) {
// 会有Duplicate method dealArray(int[]) in type TestVarArgus的错误
}

互相兼容吗?

public static void dealArray(int... intArray) {
for (int i : intArray)
System.out.print(i + " ");
System.out.println();
} 调用:
int[] intArray = { 1, 2, 3 };
dealArray(intArray);// 通过编译,正常运行
public static void dealArray(int[] intArray) {
for (int i : intArray)
System.out.print(i + " ");
System.out.println();
}
调用:
dealArray(1, 2, 3);// 编译错误
可变参数是兼容数组类参数的,但是数组类参数却无法兼容可变参数

只能放在最后一项

public static void dealArray(int count, int... intArray) {

}

public static void dealArray(int... intArray, int count) {
// 编译报错,可变参数类型应该作为参数列表的最后一项 }

优先级

public class TestVarArgus {
public static void dealArray(int... intArray) {
System.out.println("1");
} public static void dealArray(int count, int count2) {
System.out.println("2");
} public static void main(String args[]) {
dealArray(1, 2);
}
}

你觉得会执行哪一个方法???

会输出2,能匹配定长的方法,那么优先匹配该方法。含有不定参数的那个重载方法是最后被选中的

最新文章

  1. 12306官方火车票Api接口
  2. Java 之 软件的生命周期
  3. MINIX3
  4. Base64简介
  5. HDU 4873 ZCC Loves Intersection(JAVA、大数、推公式)
  6. ASP.NET关于WebPages的一点总结
  7. VS2010+OpenCV2.4.6永久性配置方法
  8. 如何动态添加和删除一个div
  9. .net(C#)操作文件的几种方法汇总
  10. Unity寻路的功能总结
  11. SharePoint解决方案由VS2010升级到VS2013部署页面报错
  12. ural1424 Minibus
  13. python excel写入及追加写入
  14. 拯救老旧工程,记桥接SpringMVC与Stripes框架
  15. .net压缩文件夹
  16. Java框架spring Boot学习笔记(九):一个简单的RESTful API
  17. [笔记]New in Chrome 66
  18. Gradle详细解析***
  19. Ajax中Delete请求参数 后台无法获取的解决方法(Restful风格)
  20. VMware Workstation 12 OpenGL ES版本支持情况与设置

热门文章

  1. 小程序如何支持使用 async/await (构建npm版)
  2. HashMap 实现原理解析
  3. Python爬虫爬取异步加载的数据
  4. 谈一谈AOP面向切面编程
  5. matlab安装出现“无法访问所在网络位置”的正确解决办法
  6. Day 04 作业
  7. ssh jail
  8. re常用模块
  9. handler.postDelayed(new Runnable()){ }运行在主线程吗
  10. 【搞定Jvm面试】 面试官:谈谈 JVM 类文件结构的认识