易截截图软件、单文件、免安装、纯绿色、仅160KB

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)


相关文档:

java调用存储过程

//调用存储过程带参
            CallableStatement ca = conn.prepareCall("{call Login (?,?)}");
            ca.setString(1,username);
         & ......

java 日期计算(几天前后)

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 实现并行端口打印

使用 Java communications API 实现并行端口打印
 
这是一个在客户支持中遇到的新问题,我在相关的网站([url]www.rxtx.org[/url] and [url]www.sun.com.cn[/url])上找到了一些有用的信息,最后终于在Windows XP 和 LinuxIA32 平台下实现并行端口打印这一功能。
 
首先,我们要从SUN的网站下载Java communicat ......

《java语言程序设计(一)》2009年自学考试大纲第2章

《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章

《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 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号