java每五个数换一行怎么编写,java怎么在同一行输入两个数

首页 > 实用技巧 > 作者:YD1662023-12-27 07:17:43

原文5.5参数个数可变的方法

可以提供参数个数可变的方法(有时,这些方法被称为“变参”(varargs) 方法)前面已经看到过这样一个方法:printf。例如,下而的方法调用:

System.out.println("%d" ,n);

System.out.printf("%d %s", n ,"widgets");

​这两条语句都调用同一个方法,不过,一个调用有2个参数,另一个调用有3个参数。

printf方法是这样定义的

public class PrintStream{ public PrintStream printf(String fmt, Object ... args){ return format(fmt,args); } }

这里的省略号 ...是Java 代码的一部分,它表明这个方法可以接收任意数量的对象(除fmt 参数以外)。

​实际上,printf方法接收两个参数,一个是格式字符串,另一个是 Object[] 数组,其中保存着所有其他参数(如果调用者提供的是整数或者其他基本类型的值,则会把它们自动装箱为对象)。现在,不可避免地要扫描 fmt 字符申,并将第 i 个格式说明符与 args[i] 的值匹配。

​换句话说,对于printf 的实现者来说,object... 参数类型与 object[] 完全一样。

​编译器需要转换每个printf 调用,将参数打包到一个数组中,并根据需要自动装箱:

​System.out.printf("%d %s", new Object[] ( Integer.value0f(n),"widgets" ) );

​你自己也可以定义有可变参数的方法,可以为参数指定任意类型,甚至是基本类型。下面是一个简单的示例,这个函数会计算若干个数值中的最大值(数值个数可变)。

public static double max(double ... values){ double largest = Double.NEGATIVE_INFINITY; for(double v : values) if(v > largest) largest = v; return largest; }

可以像下面这样调用这个函数:

​double m = max(3.1 , 40.4 , -5);

​编译器将 new double[]{3.1 , 40.4 , -5} 传递给max 函数。

注释:允许将数组作为最后一个参数传递给有可变参教的方法。例如:

System.out.printf("%d %s" , new Object[]{Integer.valueOf( i ), "widgets"})

​因此,如果一个已有函数的最后一个参数是数组,则可以把它重新定义为有可变参数的方法,而不会破坏任何已有的代码。例如,Java5中就采用这种方式增强了MessageFormat.format。如果愿意,甚至可以将main 方法声明为以下形式:

public static void main(String... args)


栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.