Java_可变参数类型
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,能匹配定长的方法,那么优先匹配该方法。含有不定参数的那个重载方法是最后被选中的
Java_可变参数类型的更多相关文章
- 深度解析Java可变参数类型以及与数组的区别
注意:可变参数类型是在jdk1.5版本的新特性,数组类型是jdk1.0就有了. 这篇文章主要介绍了Java方法的可变参数类型,通过实例对Java中的可变参数类型进行了较为深入的分析,需要的朋友可以参考 ...
- Java在方法中定义可变参数类型
学习目标: 掌握可变参数的应用 学习内容: 1.定义 在方法中传递数组有一种更简单的方式--方法的可变参数,其本质是一个语法糖,目的是让开发者写代码更简单. 2.语法 [修饰符] 返回值类型 方法名称 ...
- python可变参数类型 a,*args,**kwargs
a - int *args --tuple **kwargs -- dict *args是非关键字参数,用于元组,**kw是关键字参数,用于字典 可变参数 在Python函数中,还可以定义可变参数.顾 ...
- C++ 标准库,可变参数模板。可变参数数量,可变参数类型【转】
#include <iostream> // 可变模板参数 // 此例:可以构造可变数量,可变类型的函数输入. // 摘自:https://www.cnblogs.com/qicosmos ...
- java_可变参数构造器 Bulder模式
package com.test1.www; class NutritionFacts { //必须 private int servingSize; private int servings; // ...
- 【Java学习笔记】函数的可变参数
package p2; public class ParamterDemo { public static void main(String[] args) { int sum1 = add(4,5) ...
- 黑马程序员_Java基础:可变参数(Varagrs)的使用注意事项
------- android培训.java培训.期待与您交流! ---------- 因为在先前学习java的过程中,有涉及到可变参数,但没有太深入的去学习.所以最近自己找了些相关资料,想加深了解. ...
- C 函数可变参数
C 函数可变参数 C 语言中用 ... 表示可变参数,例如: void fun(int x ...) 头文件 cstdarg.h 中包含可变参数类型va_list和处理可变参数的三个宏: va_lis ...
- C++可变参数的另一种实现
大家熟知的C库函数printf函数就是一个可变参数函数,它是怎么实现的呢?不过他实现是有条件的,必须函数参数的入栈顺序为从右向左的顺序,也即函数的形参,在函数调用之前,必须是最右边的参数先入栈,并且参 ...
随机推荐
- csuoj-1900 锋芒毕露
Description 小闪最近迷上了二刀流——不过他耍的其实是剑——新买了一个宝库用来专门存放自己收集的双剑.一对剑有两把,分只能左手用的和只能右手用的,各自有一个攻击力数值.虽然一对剑在小闪刚拿到 ...
- windows程序设计04_显示汉字的16进制
看下面的代码 //utf-8编码 #include<stdio.h> int main() { char a[] = "中国"; printf("%x\n&q ...
- 基于iCamera测试500w摄像头-mt9p001,mt9p031,mt9p001模块小结
基于iCamera测试500w摄像头-mt9p001,mt9p031,mt9p001模块小结 先看实物 M12标准无畸变镜头效果 标准CS镜头效果 iCamera底板+mt9p001安装效果 再看看c ...
- Python3 类与对象
目录 面向对象基础 面向过程编程 面向对象编程 类 什么是类 如何定义类 类的基本操作 对象 实例化对象 对象添加特有属性 对象与类的查找顺序 对象的绑定方法 面向对象基础 面向过程编程 面向过程的核 ...
- Lua-Async 协程的高级用法
Lua-Async 这是一个基于协程的异步调用库, 该库的设计思路类似JavaScript的Promise, 但相比Promise, 它有更多的灵活性. -- 引入Async local Async ...
- java虚拟机栈 相关操作
针对JVM虚拟栈 和栈帧的操作 虚拟机栈: 栈元素是栈帧.方法调用,栈帧入栈,反之出栈. 栈帧:一个方法的运行空间. 1.局部变量表:方法定义的局部变量.方法的参数存在该表. 实例方法中有个隐含参数“ ...
- Java内存大家都知道,但你知道要怎么管理Java内存吗?
前言 深入研究Java内存管理,将增强你对堆如何工作.引用类型和垃圾回收的认识. 你可能会思考,如果你使用Java编程,关于内存如何工作你需要了解哪些哪些信息?Java可以进行自动内存管理,而且有一个 ...
- Android WebView 基本设置与H5 交互
mWebView.setDrawingCacheEnabled(true); WebChromeClient webChromeClient = new WebChromeClient(); mWeb ...
- 如何下载Vimeo视频
MediaHuman YouTube Downloader是应用在Mac上的一款非常优秀的YouTube视频下载工具,YouTube Downloader破解版将帮助你快速完成视频下载,而不会挂断.您 ...
- JS---获取元素计算后的样式属性值 (getComputedStyle)---兼容函数
获取计算后的样式属性----获取一个元素任意一个样式属性值 获取元素距离左边位置的值 会有如下兼容性问题: my$("btn").onclick = function () { / ...