Java中的可变参数一例

在C中,有可变参数一说,最常用的printf就是一个例子,事实上,在java中,确切地说,应该是在1.5版本之后,也提供了可变参数,下面,就是一个简单的例子。

1.  代码:

public class test9 {

    // 主函数
public static void main(String args[]) {

test9 t = new test9();

t.testFun();
System.out.println("==============");
t.testFun2();
}

// 自定义类型测试
class sub {
int i;
sub( int ii) {
i = ii;
}
}
public void testFun() {
sub s1 = new sub(3);
   sub s2 = new sub(5);
   print(s1,s2);
   
   
}
        // 可变参函数
public void print(sub... s) {
int i = 0;
for (sub s1: s) {
i ++;
System.out.println(s1.i);
}


}

// 基本类型测试
public void testFun2() {
int i = 100;
int j = 200;
print2(i,j);
}

        // 可变参函数
public void print2(int... x) {
for (int i: x) {
System.out.println(i);
}
}
}


2. 运行结果:

3
5
==============
100
200

3. 总结:无论基本类型,还是自定义类类型,都可以作为函数的可变参数。

### Java可变参数的使用方法 在 Java 编程语言中,可变参数允许开发者定义能够接收不定数量同类型参数的方法。通过这种方式,可以简化那些需要处理多个相同类型的输入数据的情况。 #### 基本语法 可变参数的声明形式是在参数类型后面加上省略号 `...`,它表示该参数是一个数组,因此可以通过遍历的方式访问传入的每一个值[^1]。以下是其基本语法: ```java public void methodName(Type... parameterName) { // 方法体 } ``` 这里的关键点在于: - 参数名前加上的三个点 (`Type...`) 表明这是一个可变长度的参数。 - 实际上,在编译器内部,这个参数会被转换为一个一维数组。 #### 示代码展示 下面给出几个具体的子来说明如何正确地运用可变参数功能。 ##### 单纯打印所有字符串的子 此展示了最基础的应用——将一系列字符串作为参数并逐一输出它们的内容。 ```java public class VarargsExample { public static void printStrings(String... strings) { for (String str : strings) { System.out.println(str); } } public static void main(String[] args) { printStrings("apple", "banana", "cherry"); } } ``` 上述程序运行后将会依次显示 `"apple"`、`"banana"` 和 `"cherry"` 这些单词[^5]。 ##### 计算整数总和实 另一个常见用途是对一组数值求和操作。 ```java public class SumCalculator { public static int sum(int... numbers) { int total = 0; for (int num : numbers) { total += num; } return total; } public static void main(String[] args) { System.out.println(sum(1, 2, 3, 4)); // 输出结果应为10 } } ``` 在这个案里,无论用户提供了多少个整型变量都会被累加起来得到最终的结果[^3]。 #### 注意事项与最佳实践建议 尽管可变参数非常方便实用,但在实际开发过程中仍需注意一些潜在的风险以及遵循良好的编码习惯: 1. **位置限定**: 可变参数必须放在最后一位,前面如果有其他固定参数则正常排列即可;如果只有一个可变参数,则无需担心顺序问题。 2. **性能考量**: 对于大量数据的操作来说,频繁创建销毁对象可能会带来额外开销,此时应该权衡利弊决定是否采用这种机制[^4]。 3. **清晰表达意图**: 当函数签名只包含单一的 vararg 类型时,可能让调用者难以理解具体预期行为是什么样的集合结构。所以最好配合文档注释清楚描述接口设计目的[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liranke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值