一:
在python中 有可变参数*args和万能参数**args参数分别为列表和字典。在java中也有类似的可变参数列表。不过传递进去的是可变参数数组。
1 package com.company; 2 3 public class Len_Chan_Args { 4 public static void main(String[] args){ 5 Chan_Args chang=new Chan_Args(); 6 chang.chan_Args("tom","jack"); 7 } 8 } 9 10 class Chan_Args{ 11 public void chan_Args(String x,String y){ 12 System.out.printf("the string is %s %s",x,y); 13 14 } 15 }
其中printf()就是可变参数列表方法。我们看下源码;
可变参数的语法形式:object ... args用三个句点来表示这个方法接收的参数是可变。且可变参数位置未其他形参的最后。前一个为数据的类型,后一个args为参数的数组列表。
实际上object ... args表示object数组object[],当我们填写基本的整型的时候,会自动装箱传入Intger对象。在传入参数的时候,自动扫描字符串format,将其中的第i格式的说明符和object数组args[i]对应起来。
1 public class Len_Chan_Args { 2 public static void main(String[] args){ 3 Chan_Args chang=new Chan_Args(); 4 chang.chan_Args("tom","jack"); 5 System.out.printf("max number is %f",chang.max(1,2,3,5)); 6 } 7 } 8 9 class Chan_Args{ 10 public void chan_Args(String x,String y){ 11 System.out.printf("the string is %s %s ",x,y); 12 13 } 14 public double max(double ... args){ 15 double largest=Double.MIN_VALUE; 16 for (double x:args){ 17 if(x>largest){ 18 largest=x; 19 } 20 } 21 return largest; 22 } 23 }
输出:
其中传入可变参数,args为数组。我们可以对其进行遍历。其中Double.MIN_VALUE为常量。为double类型的最小值。
type ... args可以写成type[] args形式。其中我们熟悉的main函数也可以这么写:
1 public class Len_Chan_Args { 2 public static void main(String ... args){ 3 Chan_Args chang=new Chan_Args(); 4 chang.chan_Args("tom","jack"); 5 System.out.printf("max number is %f",chang.max(1,2,3,5)); 6 } 7 }