`
JsonLiangyoujun
  • 浏览: 828161 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多
    说到不定长参数方法,其实有一个非常常用的方法,大家都用过的那就是main方法。下面就一起来看看不定长参数方法的demo;
   
package com;

public class UnfixedParameter {
	public static void main(String[] args) {
		testOne(new String[]{});
		testOne(new String[]{"a","b","c"});
		testTwo();
		testTwo("a","b","c");
	}
	
	public static void testOne(String[] args){
		for(String arg : args){
			System.out.println(arg);
		}		
	}
	
	public static void testTwo(String... args){
		for(String arg : args){
			System.out.println(arg);
		}
	}
}

    我们可以看出无论用String[]方式还是String...方式其实本质都是传入的一个字符串数组。这里还可以看出这种不定长参数方法的传参个数为>=0个。如果你希望必须传入一个或多个参数,那么可以在其前面添加参数(不能在后面添加,否则编译不通过),例如:
public static void test(int i,String par,String... args){}

    不定长参数方法方法重载:
   
package com;

public class UnfixedParameter {
	public static void main(String[] args) {
		test(new String[]{});
		test(new String[]{"a","b","c"});
		test();
		test("a","b","c");
	}
		
	public static void test(String... args){
		for(String arg : args){
			System.out.println(arg);
		}
	}
	
	public static void test(String par,String... args){
		System.out.println(par);
		for(String arg : args){
			System.out.println(arg);
		}
	}
}

    你一定会发现test("a","b","c")编译不通过。因为编译器无法确定你调用的是哪个方法。这里我故意给第一个方法传入的是String[]类型,上面我已经说过String[]和String...方式本质都是传入一个字符串数组,所以写成同名方法的话不叫方法重载,会导致编译报错。这里test(new String[]{})和test(new String[]{"a","b","c"})一定调用的是第一个方法,而test("a","b","c")无法确定调用的是哪个方法。因为你可以把第二个方法当成是传入一个字符串和一个字符串数组,也可以当成传入>=1个字符串。
    总结:
    1.两种方式本质都是传入的字符串数组,所以不能同时出现,否则编译无法通过
    2.String...参数必须放在最后面,否则编译无法通过
    3.第一种方式(即String[]方式)可以使用方法重载,第二种方式(即String...方式)使用方法重载时,调用方法时会编译不通过(参数个数为0个的时候除外)
    原文永久地址:http://jsonliangyoujun.iteye.com/blog/2364491
分享到:
评论

相关推荐

    java中不定长参数的实例用法

    在本篇文章里小编给大家分享的是关于java中不定长参数的使用方法以及相关代码内容,有兴趣的朋友们可以学习参考下。

    python函数不定长参数使用方法解析

    主要介绍了python函数不定长参数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    C#实现向函数传递不定参数的方法

    主要介绍了C#实现向函数传递不定参数的方法,涉及C#操作函数参数的相关技巧,非常具有实用价值,需要的朋友可以参考下

    TIA博途中数组Array【】的基本使用方法详解.docx

    TIA博途中数组Array【】的基本使用方法详解

    Python七大类常见问题详解.rar

    Python装饰器AOP 不定长参数 鸭子类型 重载(三) Python新式类 new init 单例模式与作用域(四) Python 进程线程协程 GIL 闭包 与高阶函数(五) Python中深浅拷贝 垃圾回收与 super继承(六) Python 调度算法 死锁 静...

    python笔记3:装饰器

    05不定长参数的函数装饰 06 返回值函数装饰 通用装饰器 07多个装饰器对同一个函数装饰 08应用 09类装饰器 01介绍 不会装饰器,不能说会python哟 def foo():  print(‘foo’)   foo#函数名指向函数 foo()#执行...

    C#与.NET技术平台实战演练.part2

    7-2 初始化多维的数组6-8 执行时期指定数组的大小6-9 JaggedArray6-10 复制数组变量6-11 数组的应用6-11-l 数组常用的属性6-11-2 数组常用的方法6-11-3 由方法返回一个数组6-11-4 把数组当参数传递6-12 ...

    C#与.NET技术平台实战演练.part1

    7-2 初始化多维的数组6-8 执行时期指定数组的大小6-9 JaggedArray6-10 复制数组变量6-11 数组的应用6-11-l 数组常用的属性6-11-2 数组常用的方法6-11-3 由方法返回一个数组6-11-4 把数组当参数传递6-12 ...

    文本文件是怎样转换为EXE文件的

     另外就是文件指针的调整问题,当进行文件显示时,必须把文件指针移到正确位置, 即跳过显示程序段部分,但由于程序调试时显示程序段长度是不定的, 无法确定具体的数值,此时可以采取一种动态记录显示程序段的方法,即...

    javascript奇异的arguments分析

    在每个函数中,都有个名为 arguments 的变量,它以类似数组的形式...比如,你可以让函数处理不定数目的参数。在 Dean Edwards 写的 base2 库中,有个叫 format 的函数充分发挥了这一特性: 代码如下: function format

    c#学习笔记.txt

    如果没有ref,out则默认为值传递,虽然可以在方法中修改这个参数的值,但是修改后的值不会还会到调用该方法的程序中. params :params 关键字可以指定在参数数目可变处采用参数的方法参数 ref :引用传递 out : 7, ...

    asp.net面试题

    C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。 8.C#中的接口和类有什么异同。 答:这个异同可多了,要说清楚还真不容易. 9.。net中读写数据库需要用到哪些类?他们的...

    数码管 (LED) 显示 类

    支持默认参数(调用时可以依次不传递有默认值参数). 支持三种调用方法. b.显示的字符的宽度与高度不随窗口的大小变化而自动变化,故调用者应自行处理. c.内部不含自动重画功能,故调用者应自己处理窗口重绘时字符的...

    c语言编写单片机技巧

    除了用layout、选择低辐射MCU的方法可以减少一些以外,还有什么别的方法? 答:在设计高频电路用电路板有许多注意事项,尤其是GHz等级的高频电路,更需要注意各电子组件pad与印刷pattern的长度对电路特性所造成的...

    C语言程序设计标准教程

     有参函数比无参函数多了两个内容,其一是形式参数表, 其二是形式参数类型说明。在形参表中给出的参数称为形式参数, 它们可以是各种类型的变量, 各参数之间用逗号间隔。在进行函数调用时,主调函数将赋予这些...

    LED 数码管 显示 类

    支持默认参数(调用时可以依次不传递有默认值参数). b.显示的字符的宽度与高度不随窗口的大小变化而自动变化,故调用者应自行处理. c.内部不含自动重画功能,故调用者应自己处理窗口重绘时字符的重新显示. d.字符串...

    《汇编语言》-第三版-王爽-以及课后答案

    8.5指令要处理的数据有多长 8.6寻址方式的综合应用 8.7div指令 8.8伪指令dd 8.9dup 实验7寻址方式在结构化数据访问中的 应用 第9章转移指令的原理 9.1操作符offset 9.2jmp指令 9.3依据位移进行转移的jmp指令 9.4转移...

    java课程设计报告贪吃蛇游戏设计.doc

    在 Java SE 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二...

    Led 显示 类 数码管

    支持默认参数(调用时可以依次不传递有默认值参数). 支持三种调用方法. b.显示的字符的宽度与高度不随窗口的大小变化而自动变化,故调用者应自行处理. c.内部不含自动重画功能,故调用者应自己处理窗口重绘时字符的...

Global site tag (gtag.js) - Google Analytics