`

java 不定长数组

    博客分类:
  • java
 
阅读更多
  在调用某个方法时,若是方法的参数个数事先无法确定该如何处理?例如System.out.printf()方法中并没有办法事先决定要给的参数个数,像是:

?123 System.out.printf("%d",10);System.out.printf("%d %d", 10, 20);System.out.printf("%d %d %d", 10, 20, 30);
    在J2SE 5.0之后开始支持不定长度参数(Variable-length Argument),这可以让您轻松的解决这个问题,直接来看下面的范例:


?MathTool.java 123456789 public class MathTool {         public static int sum(int ... nums ) { //使用…声明参数                   int sum = 0;                   for(int num : nums) {                            sum += num;                   }                   return sum;         }}

    要使用不定长度参数,在声明参数行时要在类型关键词后加上…,而在sum()方法的区块中可以看到,实际上nums是一个数组,编译器会将参数行的(int … nums)解释为(int[] nums),可以以下范例的方式制定各种长度的参数给方法来使用。


?TestVarargs.java 0102030405060708091011121314 public class TestVarargs {         public static void main(String[] args) {                   int sum = 0;                    sum = MathTool.sum(1, 2);                   System.out.println("1 + 2 = " + sum);                    sum = MathTool.sum(1, 2, 3);                   System.out.println("1 + 2 +3 = " + sum);                    sum = MathTool.sum(1, 2, 3, 4, 5);                   System.out.println("1 + 2 + 3 + 4 + 5 = " + sum);         }}
    执行结果:

    1 + 2 = 3
    1 + 2 +3 = 6
    1 + 2 + 3 + 4 + 5 = 15

    编译器会将传递给方法的参数解释为int数组传入至sum()中,所以实际上不定长度参数的功能也是自J2SE 5.0后所提供的编译蜜糖(Compiler Sugar)。

   在方法上使用不定长度参数时,记得必须声明的参数必须设置在参数行的最后一个。例如下面的方式是合法的:


?123 public void someMethod(int arg1, int arg2, int ... varargs) {          // ...}

    但下面的方式是不合法的:


?123 public void someMethod(int ... varargs , int arg1, int arg2) {          // ...}

    也无法使用两个以上的不定长度参数,例如下面的方式是不合法的:


?123 public void someMethod(int ... varargs1, int ... varargs2){          // …}

    如果使用对象的不定长度参数,声明的方法相同。例如:


?123 public void someMethod(SomeClass… somes){          // …}
分享到:
评论

相关推荐

    java中申请不定长度数组ArrayList的方法

    Java 中申请不定长度数组 ArrayList 的方法 Java 中申请不定长度数组 ArrayList 的方法是 Java 编程语言中一个非常重要的知识点。ArrayList 是 Java 中一种非常常用的集合类,它可以动态地增长或缩小,以适应不同的...

    Java对象的容纳 数组。容器

    在Java编程中,对象的容纳主要分为两种方式:数组和容器。这里我们将详细讨论这两种方式。 **一、数组** 数组是一种基础的存储结构,它允许我们存储相同类型的对象引用。在Java中,数组的创建和使用可以通过以下...

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

    在参数列表中使用“...”形式定义不定长参数,实际上这个不定长参数是一个数组,编译器会将(int...a)这种形式看作是(int[] a)的形式。 使用不定长参数的优点是可以提高代码的灵活性和可读性,例如,在数学运算中...

    优质java课件 java程序设计教程(第6版)07.数组复习(共19页).ppt

    Java语言中的数组是一种重要的数据结构,它允许存储同类型的多个数据项。在Java程序设计教程(第6版)中,数组被深入地讲解,包括数组的创建、使用以及作为参数传递。 1. **数组作为参数**: - 在Java中,数组名...

    jni C结构体转JAVA实体类

    可实现将C语言中的结构体转换为JAVA...目前有个难点是将枚举类型直接转换为JAVA中的枚举,这个目前还搞不定,如果有朋友知道怎么搞,欢迎来讨论指导。 demo中JAVA部分的开发工具使用的是eclipse,C部分使用的是VS2013。

    Java学习路径与方法探讨PPT.pptx

    * Java泛型与可变参数:Java泛型提供了类型安全的数据存储和操作方式,而可变参数则为方法传递不定数量的参数提供了便利。了解这些特性有助于编写更加通用、灵活的代码。 Java面向对象编程 Java面向对象编程是Java...

    java可变长参数(三个点)md,学习代码

    在Java中,可变长参数的本质是一个数组。当我们调用一个带有可变长参数的方法时,编译器会自动将传入的参数打包成一个数组传递给方法。例如,我们有一个接受可变长整数参数的方法: ```java public void print...

    数组和链表和集合的区别和应用场景以及堆和栈的区别 数组和链表.pdf

    5. 栈内存存放的变量生命周期一旦结束就会被释放,而堆内存存放的实体会被垃圾回收机制不定的回收。 数组、链表和集合都是数据结构中重要的概念,它们之间的区别在于存储方式、访问方式和应用场景。栈和堆是Java...

    Java程序设计试题及答案(1)[1].doc

    试题共分为判断题、不定项选择题两部分,旨在考察考生的 Java 编程基础知识和实际编程能力。 一、判断题 1. Java 语言具有较好的安全性和可移植性及与平台无关等特性。√ 该题考察 Java 语言的特性。Java 语言是...

    黑马程序员入学Java精华总结

    - Java允许方法接收不定数量的参数,使用省略号`...`表示。 7. **数组简介** - 数组是一种存储相同类型元素的数据结构。 8. **一维数组的声明与初始化** - 定义数组的语法为:`数据类型[] 数组名 = new 数据...

    java可变参数

    综上所述,Java可变参数是Java语言中一个强大的特性,它简化了处理不定数量参数的方法定义,同时提供了良好的可读性和便利性。理解其工作原理和使用注意事项,可以帮助我们编写出更高效、更易于维护的代码。

    JAVA5/JAVA6新特性

    与变长参数类似,但主要用于方法的参数列表中,提供了一种传递不定数量参数的方法。 ### Java 6新特性 #### 9. **并发工具类(Concurrent Utility Classes)** Java 6引入了`java.util.concurrent`包,提供了...

    Java新特性对数组的支持

    3. **可变参数**(Varargs):自Java 5起,开发者可以使用可变参数来简化方法调用,尤其是当需要传递数量不定的数组作为参数时。例如,`public void printNumbers(int... numbers) {...}` 这个方法可以接受任意数量...

    Java基础知识加强

    可变参数是JDK 5.0的另一创新,它允许方法接收不定数量的参数,如Arrays.asList()方法。调用时,编译器会自动创建一个数组来存储这些参数。但是,可变参数必须作为方法参数列表的最后一个参数,并且一个方法只能有一...

    Core Java Java的基本知识

    - 方法可以接受不定数量的参数。 ##### 4. 自动装箱与拆箱 - 在基本类型与包装类之间自动转换。 ##### 5. 枚举类型 - 用于创建一组固定的常量。 ##### 6. 泛型 - 泛型提供了一种类型安全的集合类实现方式。 ####...

    跟汤老师学Java(第7季):数组

    本课程从零开始,以通俗易懂的方式讲解Java入门,真正做到零基础入门学习,最适合初学者的教程!课程内容包括:1.数组简介2.数组基本用法3.动态赋值4.增强for循环5.练习:数组的用法6....不定长参数

    关于java中可变长参数的定义及使用方法详解

    Java中的可变长参数(Varargs)是一种非常实用的语言特性,它允许我们在定义方法时接受一个不定数量的参数。这种特性使得我们无需为每个可能的参数组合定义单独的方法,简化了代码并提高了代码的可读性和灵活性。...

    java5在线版和离线版

    4. **变长参数**:通过`...`操作符,可以定义接受不定数量参数的方法,增强了函数的灵活性。 5. **for-each循环**:简化了遍历数组和集合的代码,减少了迭代器的使用。 6. **注解(Annotations)**:注解为元数据...

    046-Jack-Java笔记笔记笔记

    此外,可变参数(varargs)在方法声明中允许接收不定数量的参数,这些参数在内部会被封装为一个数组。 总之,理解并熟练掌握Java中的标识符规则、数据类型转换、数组操作、面向对象编程的概念以及相关的编程技巧,...

    详细的java基础总结

    Java 5之后引入了可变参数的概念,允许方法接受数量不定的参数。例如: ``` public void print(int... numbers) { for (int num : numbers) { System.out.println(num); } } ``` - **命令行参数** Java...

Global site tag (gtag.js) - Google Analytics