Java可变参数列表详解

Java可变参数列表详解

1、接受的传入参数情况:

如public void test(String ...args){...}

1)不使用参数,如test()

2)使用一个或多个参数,如test("1"); test("1","2");

3)使用数组 test(new String[]{"1","2"});

2、方法内部访问参数:

在test方法内部,我们可以像使用数组的访问方式一样来访问参数args.如:args[i]

3、编译器原理

编译器编译test(String ...args){...} 编译成为数组调用的方式test(String[] args){}

4、注意事项

如果同时同一个类中还有一个test方法,例如test(String args) ,我们采用 test("1")的方式调用,我们就可以知道了,因为有这个方法存在,所以编译器就会优先使用这个 test(String args)    方法,而不会使用不定参数的方法,这个原因很明确,因为不定参数本质上是一个数组为参数的方式。

所以,如果你定义了一个不定参数的test方法,如果你再定义一个test(String[] args)的以数组为参数的方法,编译器就会提示你方法定义重复。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • java中的可变参数使用方法

    java中的可变参数使用方法 可变参数时Java 1.5新增的方法,可变参数方法接收0个或者多个指定类型的参数,可变参数机制通过先创建一个数组,数组的大小为在调用位置所传递的参数数量,然后将参数值传到数组中,最后将数组传递给方法.如: public class Test{ public int sum(int... args) { int sum = 0; for (int arg : args) { sum += arg; } return sum; } } 可变参数提供了方便,但是使用可变参

  • java可变参数使用示例

    Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理.注意:可变参数必须位于最后一项.当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数.因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项. 可变参数的特点: 1.只能出现在参数列表的最后: 2....位于变量类型和变量名之间,前后有无空格都可以: 3.调用可变参数的方法时,编译器

  • Java方法的可变参数类型实例分析

    Java方法中的可变参数类型是一个非常重要的概念,有着非常广泛的应用.本文就以实例形式对此加以分析.具体如下: 一般来说,许多Java初学者在看到下面的这段代码的时候,都会问一个问题:dealArray方法里那三个小点点是什么啊? public class TestVarArgus { public static void dealArray(int... intArray){ } public static void main(String args[]){ } } 这就是本文所要讨论的问题:

  • java 可变参数详解及实例

    java 可变参数详解 可变参数(Varargs)使程序员可以声明一个接受可变数目参数的方法. 可变参数也是JDK5.0中出现的新特性. 可变参数本质上就是一个数组,对于某个声明了可变参数的方法来说,我们既可以传递离散的值,也可以传递数组对象. 但如果将方法中的参数定义为数组,那么只能传递数组对象而不能传递离散的值. 注意,可变参数必须是方法声明中的最后一个参数.一个方法不可能具有两个或两个以上的可变参数. 附上例子程序: public class TestVarargs { private s

  • Java中支持可变参数详解

    意思就是:参数的个数可以根据需要写,你可以写1个.2个.3个....他们都被保存到一个参数的数组中. 但是这些参有一些约束:他们必须是同类型的,比如都是String字符串类型. 同时,可变参数的函数中的参数的写法也有约束:比如,可变参数的数组必须写在参数的最后,否则程序不知道你的参数到底有多少个. 例子:输出可变参数中的参数值 public class VariableArgument { public static void main(String[] args) { printArgumen

  • 从零开始学JAVA之可变参数

    下面是一个简单的小程序: 复制代码 代码如下: import java.util.Arrays; class lesson6 {     public static void main(String[] args)     {         int array[]={2,3,1,5,4,6};         System.out.println(Arrays.toString(array));         System.out.println(getSum(array));       

  • 浅谈Java中的可变参数

    可变参数 可变参数就是一个方法可以接收任意多个参数!例如:fun().fun(1).fun(1,1).fun(1,1,1).你可能认为这是方法重载,但这不是重载,你想想重载能重载多少个方法,而fun()方法是可以传递任何个数的参数,你能重载这么多个方法么? 2.1 定义可变参数方法 public voidfun(int- arr) {} 上面方法fun()的参数类型为int-,其中"-"不是省略号,而是定义参数类型的方式.参数arr就是可变参数类型.你可以把上面代码理解为:public

  • Java可变参数列表详解

    Java可变参数列表详解 1.接受的传入参数情况: 如public void test(String ...args){...} 1)不使用参数,如test() 2)使用一个或多个参数,如test("1"); test("1","2"); 3)使用数组 test(new String[]{"1","2"}); 2.方法内部访问参数: 在test方法内部,我们可以像使用数组的访问方式一样来访问参数args.如

  • java中参数传递方式详解

    java中参数传递方式详解 java新手入门面临的一个经典的话题,本文意在终结这个话题,java中有说法:Java里面参数传递都是按值传递,怎么理解这句话?用文字说明恐怕不容易说明白,说明白恐怕也难以想明白. 前提 先明确一下,按值还是按引用的概念,它是来自c++语言,引用不是汉语词典中的一个词,而是c++的概念--"&"这个符号还记得吧? 为什么有这个话题呢?其一,是对按引用传递理解不透彻:其二,诸多java书籍及讨论论点并没有切中要害. 一句话概括,按值传参还是按引用传参,

  • C语言可变长的参数列表详解

    C语言可变长的参数列表 C语言可创建接收参数个数不确定的函数.如常用的标准库函数printf就是一个接收参数个数可变的函数.函数printf至少要接收一个字符串作为它的第一个实参.但事实上,printf还能够接收任意数目的其他实参.printf的函数原型是: int printf(const char *format, ...); 其中的省略号(…)表示这个函数可以接收可变数目的各种类型的实参. 需要注意:这个省略号必须放在形参列表的末尾. 可变参数头文件<stdarg.h>中的宏和定义,为创

  • C语言可变参数函数详解示例

    先看代码 复制代码 代码如下: printf("hello,world!");其参数个数为1个.printf("a=%d,b=%s,c=%c",a,b,c);其参数个数为4个. 如何编写可变参数函数呢?我们首先来看看printf函数原型是如何定义的.在linux下,输入man 3 printf,可以看到prinf函数原型如下: 复制代码 代码如下: SYNOPSIS#include <stdio.h>int printf(const char *form

  • Java Varargs 可变参数用法详解

    Java1.5 提供了一个叫varargs的新功能,就是可变长度的参数. "Varargs"是 "variable number of arguments"的意思.有时候也被简单的称为 "variable arguments". 定义实参个数可变的方法:只要在一个形参的"类型"与"参数名"之间加上三个连续的"."(即"...",英文里的句中省略号),就可以让它和不确定

  • C语言可变参数函数详解

    目录 C语言可变参数函数 总结 C语言可变参数函数 C 语言允许定义参数数量可变的函数,这称为可变参数函数(variadic function).这种函数需要固定数量的强制参数(mandatory argument),后面是数量可变的可选参数(optional argument). 这种函数必须至少有一个强制参数.可选参数的类型可以变化.可选参数的数量由强制参数的值决定,或由用来定义可选参数列表的特殊值决定. C 语言中最常用的可变参数函数例子是 printf()和 scanf().这两个函数都

  • Swift如何调用Objective-C的可变参数函数详解

    前言 这个问题是一个朋友问我怎么写,一开始我是拒绝的.我想这种东西网上随便 google 下不就有了吗.他说,查了,但没大看明白.于是我就查了下,没想到这个写法确实有点诡异,我第一反应也没看明白.所以随便水一篇文章,强行完成本周的博客任务,顺便给朋友一个交代. 本文分为两部分,第一部分是 Swift 怎么调用 Objective-C 的可变参数函数,第二部分是 Objective-C 怎么调用 Swift 的可变参数函数. Swift 调用 Objective-C 的可变参数函数 先写一个例子

  • Kotlin传递可变长参数给Java可变参数实例代码

    本文研究的主要是Kotlin传递可变长参数给Java可变参数的方法,具体实现代码如下. 定义Java可变参数方法 package com.tcl.john.studymvvm.utils; /** * 调用Java方法的工具类 * Created by ZhangJun on 2017/10/25. */ public class CallJavaUtils { public static int addNumbers(String name, int... args) { int result

  • Java中可变长度参数代码详解

    到J2SE1.4为止,一直无法在Java程序里定义实参个数可变的方法--因为Java要求实参(Arguments)和形参(Parameters)的数量和类型都必须逐一匹配,而形参的数目是在定义方法时就已经固定下来了.尽管可以通过重载机制,为同一个方法提供带有不同数量的形参的版本,但是这仍然不能达到让实参数量任意变化的目的. 然而,有些方法的语义要求它们必须能接受个数可变的实参--例如著名的main方法,就需要能接受所有的命令行参数为实参,而命令行参数的数目,事先根本无法确定下来. 对于这个问题,

随机推荐