如何应用Java的可变参数Java认证考试

文章作者 100test 发表时间 2010:01:02 16:11:59
来源 100Test.Com百考试题网


  可变参数
  Java语言在JDK1.5中首次推出可变参数,variable arguments,或简称varargs。这一新语言特征给软件开发人员在编写方法重载时提供了方便和灵活性。但可变参数的应用并不像想象的那么简单,使用时有其特殊要求和局限性。
  重载的最好例子
  读者朋友可能有这样的编程经历:在编写一个方法时,其参数随着程序运行的条件而变化,在编译期间无法确定。具体地讲,例如编写一个打印参加聚会party的程序,其中方法printInvitation()将根据作为参数的参加人姓名,打印邀请卡。但这个参数的数量事先并不确定。当然可以编写许多重载的方法来解决这个问题,如:
  void printInvitation(String name).
  void printInvitation(String name1, String name2).
  void printInvitation(String name1, String name2, String name3).
  ...
  问题是编写多少个重载的方法才可以解决给所有参加者打印邀请卡?也许需要改变您的程序设计,而使用数组或者链接表了。
  应用可变参数可以方便、灵活地解决这类问题。例如:
  //完整程序存在本书配套资源目录Ch12名为VarargsTest.java
  void printInvitation(String...names) {
  for (String name : names) {
  makeCard(name). //调用方法按照姓名打印邀请卡
  System.out.println("Recording info: invitation card has been printed for " name).
  }
  }
  这里,(String...names)便是可变参数。它包括从0到任意个相同类型的参数。在编译期间,这个可变参数将被转换为字符串数组形式,即:
  void printInvitation(String[] names)
  如下是调用这个方法的例子:
  printInvitation("李刚", "David Smith").
  printInvitation("Greg Wu", "Paul Nguyen", "Liu Wei", "张新");
  printInvitation(). //无参数
  当在无参数情况下调用这个方法时,将不执行任何这个方法中的代码。
  如下是运行结果:
  Recording info: invitation card has been printed for 李刚
  Recording info: invitation card has been printed for David Smith
  Recording info: invitation card has been printed for Greg Wu
  Recording info: invitation card has been printed for Paul Nguyen
  Recording info: invitation card has been printed for Liu Wei
  Recording info: invitation card has been printed for 张新
  怎样工作
  可变参数也不神秘。实际上,JVM将根据程序中调用这个方法时提供的参数数量,来装载和运行它。
  可变参数的简单语法格式为:
  methodName([argumentList], dataType...argumentName).
  其中:
  argumentList——普通参数,可选项。
  dataType——数据类型或者类。自动转换成dataType代表的数组。
  ...——Java的操作符。表示0到多个。必须是3个点。
  argumentName——参数名。
  注意,可变参数必须在最后。
  下面是应用可变参数的更多例子:
  // 完整程序存在本书配套资源目录Ch12名为VarargsTest.java
  public static int sumInts(int...numbers) { //可变整数数组类型参数
  int sum = 0.
  for (int num : numbers)
  sum =num.
  return sum.
  }

相关文章


Ubuntu下Java环境的搭建Java认证考试
Java虚拟机概念及体系结构详述Java认证考试
介绍Java对象序列化使用基础Java认证考试
对Java编程思想的忠告Java认证考试
如何应用Java的可变参数Java认证考试
关于Java编程语言中的return语句实例介绍Java认证考试
利用Jsvc把Java程序嵌入到Linux服务中去Java认证考试
java认证综合辅导:Guice整合Struts2简易教程Java认证考试
java认证辅导:Java多线程问题及处理(笔记)Java认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛