Java方法的可变参数类型
许多Java新人在看到下面的这段代码的时候,都会问一个问题:dealArray方法里那三个小点点是什么啊?
public class TestVarArgus {
public static void dealArray(int... intArray){
}
public static void main(String args[]){
}
}
这就是今天这篇blog的主角:可变的参数类型,也称为不定参数类型。英文缩写是varargus,还原一下就是variable argument type。通过它的名字可以很直接地看出来,这个方法在接收参数的时候,个数是不定的。那么好,现在就先来调用下这个方法。请看代码和输出:
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
通过main方法里的调用,可以看出来这个可变参数既可以是没有参数(空参数),也可以是不定长的。看到这里估计都能明白,这个不定长的参数其实和数组参数挺像的。事实上,也确实是这么回事儿。编译器会在悄悄地把这最后一个形参转化为一个数组形参,并在编译出的class文件里作上一个记号,表明这是个实参个数可变的方法。请看代码:
dealArray(); //dealArray(int[] intArray{});
dealArray(1); //dealArray(int[] intArray{1});
dealArray(1, 2, 3); //dealArray(int[] intArray{1, 2, 3});
说到这里,那么可以来验证一下,看看是不是这个可变参数就是数组类参数?看代码:
public class TestVarArgus {
public static void dealArray(int... intArray){
for (int i : intArray)
System.out.print(i +" ");
System.out.println();
}
public static void dealArray(int[] intArray){//会有Duplicate method dealArray(int[]) in type TestVarArgus的错误
for (int i : intArray)
System.out.print(i +" ");
System.out.println();
}
public static void main(String args[]){
dealArray();
dealArray(1);
dealArray(1, 2, 3);
}
}
从上面这段代码可以看出,这两个方法是冲突的,是无法重载的。到这里,再来做一个有意思的实验:
public class TestVarArgus {
public static void dealArray(int... intArray){
for (int i : intArray)
相关文档:
//调用存储过程带参
CallableStatement ca = conn.prepareCall("{call Login (?,?)}");
ca.setString(1,username);
& ......
public class DateTest {
public static void main(String[] args) {
Date date = new Date(); // 新建一个日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 格式化日期
String beforeDate = sdf.format(getDateBefore(date, 10));
System ......
使用 Java communications API 实现并行端口打印
这是一个在客户支持中遇到的新问题,我在相关的网站([url]www.rxtx.org[/url] and [url]www.sun.com.cn[/url])上找到了一些有用的信息,最后终于在Windows XP 和 LinuxIA32 平台下实现并行端口打印这一功能。
首先,我们要从SUN的网站下载Java communicat ......
《java语言程序设计(一)》2009年自学考试大纲第2章
www.wesiedu.com 2009-5-5 在线模拟考场
第2章 运算和语句
(一)课程内容
2.1 数据运算
2.1.1 赋值运算
2.1.2算术运算
2.1.3自增和自减运算
2.1.4关系运算
2.1.5逻辑运算
2.1.6条件运算
2.1.7其他运算
2.2语句
2.2.1基本语句
2.2 ......
《java语言程序设计(一)》2009年自学考试大纲第3章
www.wesiedu.com 2009-5-5 在线模拟考场
第3章 面向对象编程基础
(一)课程内容
3.1 面向对象的基本概念
3.2 Java的类和对象
3.2.1 类
3.2.2对象
3.2.3实例变量和类变量
3.2.4实例方法和类方法
3.2.5访问权限
3.2.6继承
3.2.7 Java ......