【JavaSE成神之路】可变参数

简介: 哈喽,我是兔哥呀,今天就让我们继续这个JavaSE成神之路!这一节啊,咱们要学习的内容是Java的可变参数。

7e29fc93ce3d4f43f5f9180b60b27160.gif


1.什么是可变参数

首先来看下概念。


Java的可变参数指的是在方法中设置不定数量的参数。可变参数使得代码更加简洁,可以更好地处理参数的变化。


java允许将同一个类中多个同名,同功能但参数个数不同的方法封装成一个方法。就可以通过可变参数实现。


传入的多个参数会被以数组的形式传入,也可以直接传入数组。


可变参数可以和普通参数一同传入,但是要确定可变参数放在最后。


比如:

public static boolean test(Object param1, Object... params)

特点

只能出现在参数列表的最后;

... 位于变量类型和变量名之间,前后有无空格都可以;

调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。


2.举一个栗子


可变参数使用一个省略号(...)来表示,它可以接受任意数量的参数,参数类型必须相同。 例如:

public static int sum(int... nums) {
    int sum = 0;
    for (int num: nums) {
        sum += num;
    }
    return sum;
}

上面的例子中,sum()方法接受任意数量的int类型参数,然后将它们相加,最后返回总和。 可以使用以下方式调用sum()方法:

sum(1, 2, 3);
sum(1, 2, 3, 4, 5);
sum(1, 2, 3, 4, 5, 6, 7, 8, 9);

可变参数可以用于实现可变长度的参数列表,可以接受任意数量的参数,而不必指定参数的个数。

怎么样,神奇吧。

3. 需要注意的点

  1. Java可变参数只能放在参数列表的最后一位,不能放在其他参数前面。
  2. Java可变参数只能有一个,不能有多个。

4. 思考题

上面我们对可变参数的定义为:在方法中设置不定数量的参数,传入的多个参数会被以数组的形式传入,也可以直接传入数组。

假如有一个方法长这样:

public static boolean test(Object... params)

当我调用的时候,传入的值就是null,那么会被解析成数组吗?


答案:

可变参数的核心是将参数封装为数组,但是传入null时并不是只含有一个null元素的数组,而是null。

可变参数方便调用者传入不固定数量的参数,且不需要在前面非常不优雅的构造数组对象。

相关文章
【JavaSE专栏35】可变参数的那些事,以不变应万变
【JavaSE专栏35】可变参数的那些事,以不变应万变
128 0
|
存储 IDE Java
【JavaSE成神之路】Java面向对象(上)
哈喽,我是兔哥呀,今天就让我们继续这个JavaSE成神之路! 这一节啊,咱们要学习的内容是Java的面向对象。
167 1
【JavaSE成神之路】一文洞悉Java语言的作用域
哈喽,我是兔哥呀,今天就让我们继续这个JavaSE成神之路! 这一节啊,咱们要学习的内容是Java语言的作用域。
151 0
【JavaSE成神之路】一文洞悉Java语言的作用域
【JavaSE】Java基础语法(三十一):可变参数
1. 可变参数 可变参数介绍 可变参数又称参数个数可变,用作方法的形参出现,那么方法参数个数就是可变的了 方法的参数类型已经确定,个数不确定,我们可以使用可变参数
|
存储 搜索推荐 IDE
【JavaSE成神之路】一文洞悉Java语言的基本语法
哈喽,我是兔哥,今天就让我们继续这个JavaSE成神之路! 这一节,咱们要学习的内容是Java语言的基本语法,包括变量、常量、数据类型、运算符、流程控制语句、数组、字符串。 这是我们学好Java的基石,万丈高楼平地起的前提就是打好地基。 下面就让我们来一一参悟这些概念吧。
【JavaSE成神之路】一文洞悉Java语言的基本语法
【JavaSE成神之路】一文洞悉Java的方法
哈喽,我是兔哥呀,今天就让我们继续这个JavaSE成神之路! 这一节啊,咱们要学习的内容是Java语言的方法。
【JavaSE成神之路】一文洞悉Java的方法
《Java工程师必读手册》——Java极客主义系列——Java函数优雅之道(7)
《Java工程师必读手册》——Java极客主义系列——Java函数优雅之道(7)
113 0
|
Java 程序员
《Java工程师必读手册》——Java极客主义系列——Java函数优雅之道(1)
《Java工程师必读手册》——Java极客主义系列——Java函数优雅之道(1)
127 0
《Java工程师必读手册》——Java极客主义系列——Java函数优雅之道(6)
《Java工程师必读手册》——Java极客主义系列——Java函数优雅之道(6)
《Java工程师必读手册》——Java极客主义系列——Java函数优雅之道(2)
《Java工程师必读手册》——Java极客主义系列——Java函数优雅之道(2)
112 0