Java的不定参数

旧城等待, 2022-06-12 09:37 484阅读 0赞

问题:在传参数的时候,如果参数的个数不确定怎么办?参数可以是0个,也可以是1个,可以是任意多个,怎么办呢?
这个时候就需要用到不定参数了。
1)首先,来观察一下不定参数的基本格式:
String…strings
Object…objects
int…is
float…fs
2)不定参数只能作为方法的形参,不能用作变量

  1. public static void main(String[] args) {
  2. String... s=null;//这样做是错误的,编译无法通过
  3. }

3)不定参数的真实类型是一维数组。数组的数据类型:定义该不定参数时指定的类型;数组的长度:传过去的参数的个数。
String…strings的真实类型是:String[]
Object…objects的真实类型是:Object[]
int…is的真实类型是:int[]
float…fs的真实类型是:float[]

  1. public class Demo5 {
  2. public static void main(String[] args) {
  3. test(1);//传一个参数过去
  4. }
  5. public static void test(Object...objects){
  6. System.out.println(objects);
  7. System.out.println(objects.getClass().getTypeName());
  8. if(objects!=null){
  9. System.out.println("长度:"+objects.length);
  10. }
  11. }
  12. }

运行结果:
[Ljava.lang.Object;@15db9742
java.lang.Object[]
长度:1
4)为不定参数传值:可以传null,可以传0个参数,可以传1个参数,可以传任意个参数。

  1. public class Demo5 {
  2. public static void main(String[] args) {
  3. test(null);//传null过去
  4. test();//传0个参数
  5. test("a");//传1个参数
  6. test("a","b","c");//传3个参数
  7. }
  8. public static void test(String...strings){
  9. }
  10. }

5)不定参数的2个规定:第一,方法的参数列表中最多只有一个不定长度的参数;第二,就是不定长度的数组的位置必须是最后一个参数。不然不能通过编译。这2项规定非常好理解。

  1. public static void test2(String...strings,int number){
  2. //无法通过编译
  3. //The variable argument type String of the method test2 must be the last parameter
  4. }

发表评论

表情:
评论列表 (有 0 条评论,484人围观)

还没有评论,来说两句吧...

相关阅读

    相关 不定参数传递

    把程序类比于商场 (1)入口:go语言有且只有一个入口函数main (2)干活,调用函数 //(1)go语言以包作为管理单位 //(2)每个文件必须先声明包

    相关 Java不定参数

    问题:在传参数的时候,如果参数的个数不确定怎么办?参数可以是0个,也可以是1个,可以是任意多个,怎么办呢? 这个时候就需要用到不定参数了。 1)首先,来观察一下不定参数