可变长度参数

可变长度参数

先讲可变长度参数,看一段代码:

public static void main(String[] args)
{
    print("000", "111", "222", "333");
}

public static void print(String... strs)
{
    for (int i = 0; i < strs.length; i++)
    {
        System.out.println(strs[i]);
    }
}

print方法的参数的意思是表示传入的String个数是不定的,看一下代码的运行结果:

000
111
222
333

我用数组遍历的方式成功地将输入的参数遍历出来了,这说明两个问题:

1、可以使用遍历数组的方式去遍历可变参数

2、可变参数是利用数组实现的

既然这样,那我其实main函数也可以这么写,完全可以:

String[] strs = {"000", "111", "222", "333"};
print(strs);

那直接传入一个数组不就好了?问题是,数组是要指定长度的,万一这次我想传2个String,下次我想传3个String怎么办呢?

最后,注意一点,可变长度参数必须作为方法参数列表中的的最后一个参数且方法参数列表中只能有一个可变长度参数

时间: 2024-10-06 05:57:21

可变长度参数的相关文章

c语言中可变长度参数使用的注意事项

C语言中可变长度参数极大地方便了我们编程的同时,也非常容易由于使用不慎导致及其隐蔽的错误.以下面的这段函数为例,运行一段时间后会随机出现段错误,而且出错的位置一直稳定在vsprintf()函数里面. -----... a_list ap; va_start(ap, cmd); -----... rep = (redisReply *)redisvCommand(rc, cmd, ap); vsprintf(str, cmd, ap); -----... va_end(ap); 为了深入探究原因,

Java语法糖1:可变长度参数以及foreach循环原理

语法糖 接下来几篇文章要开启一个Java语法糖系列,所以首先讲讲什么是语法糖.语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的字节码或者特定的方式对这些语法做一些处理,开发者就可以直接方便地使用了.这些语法糖虽然不会提供实质性的功能改进,但是它们或能提高性能.或能提升语法的严谨性.或能减少编码出错的机会.Java提供给了用户大量的语法糖,比如泛型.自动装箱.自动拆箱.foreach循环.变长参数.内部类.枚举类.断言(as

Java语法糖1:可变长度参数

先抄一段定义: 语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用.Java 中最常用的语法糖主要有泛型.变长参数.条件编译.自动拆装箱.内部类等.虚拟机并不支持这些语法,它们在编译阶段就被还原回了简单的基础语法结构,这个过程成为解语法糖. 简而言之就是语法糖就是为了方便编程,但不影响语言本身功能的情况下做的一种语法处理.虽然没有对语言本身有

java 可变长度参数

Java中的可变长度形式参数 格式 public static void add(int...a) { } 借助此例子介绍 特点: (1)可以接收相应类型任意个数的实参,实参也可以是数组 (2)当代码中有其他形参时,可变长度的形参要放在形参列表的末尾 public static void add(double num,int...b) (3)可变形参实现的过程也是按照数组来实现的: a相当于数组名,比如写一个求和方法 /* 可变长度的参数   */  import java.util.Scann

使用stdarg.h实现可变长度参数

现在先用一个使用过程讲解一下: ◎用法: func( Type para1, Type para2, Type para3, … ) { /****** Step 1 ******/ va_list ap; va_start( ap, para3 ); //一定要“…”之前的那个参数 ,而且这个参数不能使引用类型,因为引用类型不能根据其地址获取后面参数的地址 /****** Step 2 ******/ //此时ap指向第一个可变参数 //调用va_arg取得里面的值 Type xx = va_

PHP 可变长度参数列表

In PHP 5.6 and later, argument lists may include the ... token to denote that the function accepts a variable number of arguments. The arguments will be passed into the given variable as an array; for example: Example #13 Using ... to access variable

python 函数的参数定义及调用

参数定义:1. 位置参数:    这是熟悉的标准化参数,位置参数必须在调用函数中定义的准确顺序来传递,在没有默认参数的情况下,传入参数    的精确数目必须和声明的数目一致. def foo(who, name): print('{0} is {1}'.format(who, name) foo函数有两个位置参数,那么意味这foo的调用必须有两个参数,不能多也不能少2. 默认参数: 定义默认参数的如下: def func(posargs, defargs=dval, defargs2=dval2

C语言可变长参数实现原理

博客:存储系统研究 微博:http://weibo.com/u/2203007022             (1)      C语言可变参数 我们可以从C语言的printf得出可变参数的作用,printf函数的原型如下: int printf ( const char * format, ... ); 通过使用可变个数参数,就是传入的参数个数是可变的,如printf需要根据format实参传入多个实参. (2)      C语言可变参数的使用 下面一个函数myprintf是自己实现的比较简单的

Java基础:可变参数(Varagrs)的使用注意事项

因为在先前学习java的过程中,有涉及到可变参数,但没有太深入的去学习.所以最近自己找了些相关资料,想加深了解.下面就是学习整理后的内容了. 在JDK1.5后,定义方法时,可以使用同类型个数不确定的参数. 使用可变参数定义方法时,方法实际上是把这些不确定数目的参数隐式地都装进一个数组中, 然后方法再从这个数组中取出元素来使用. 也就是说,方法使用可变参数,和JDK1.4中方法使用数组参数时的处理方式是一样的,都是取出数组元素来使用. 一.定义方法: 返回值 方法名(参数类型...可变参数名) 1