在java中定义形参可变的成员方法

本文介绍Java中如何定义和使用可变参数的方法。通过实例演示了如何在一个方法中接受不定数量的参数,并对这些参数进行求和运算。
在java中定义形参可变的成员方法;


1.在方法中使用三个点表示该形参的数量是可变的,例如:String... strs,其中strs是一个数组类型;
2.数量可变的形参要放在所有形参的末尾;


源码示例:
import org.junit.Test;
public class Demo1 {
//测试1
@Test
public void test1(){
int result = add(1,2);
System.out.println("result = "+result);
}
//测试2
@Test
public void test2(){
int result = add(1,2,3,4);
System.out.println("result = "+result);
}
/**
* 说明:参数可变的方法
* @param a
* @param b
* @param arr
* @return
*/
public int add(int a,int b,int... arr){
int sum = 0;
sum += (a+b);
//计算可变参数部分
if(arr != null && arr.length > 0){
for(int i=0;i<arr.length;i++){
sum += arr[i];
}
}
return sum;
}  
}
### Java 中默认值参数和形式参数的概念及用法 #### 1. 默认值参数 在 Java 中,方法的参数并不支持直接指定默认值(如 C++ 或 Python)。然而,在类成员变量声明时,Java 提供了默认初始化机制。如果未显式初始化某个字段,则会为其分配一个默认值[^4]。 对于基本数据类型的默认值如下: - `byte`, `short`, `int`, `long` 的默认值为 `0`. - `float`, `double` 的默认值为 `0.0`. - `char` 的默认值为空字符 `\u0000`. 而对于引用类型,默认值则为 `null`. 这意味着如果没有给对象赋初值,那么该对象将指向 `null`[^3]. 尽管如此,Java 并不提供类似于其他语言的功能来设定方法参数上的默认值。因此开发者通常通过重载或者条件判断的方式来模拟这一特性: ```java public void greet(String name) { if (name == null || name.isEmpty()) { name = "Guest"; // 设置默认名称 } System.out.println("Hello, " + name); } ``` 上述例子展示了如何手动处理可能缺失的输入参数情况下的逻辑替代方案之一[^2]。 #### 2. 形式参数 形式参数是指在定义方法时所使用的占位符名列表。它们代表实际传入的数据项,并允许我们在方法体内操作这些外部提供的信息。例如下面这个简单的加法器演示了两个整数作为其形参的例子: ```java public int addNumbers(int num1, int num2){ return num1 + num2; } ``` 在这里,“num1” 和 “num2” 就是我们所说的形式参数[^1]。 虽然 Java 不支持原生意义上的带缺省值得函数签名设计模式,但是我们仍然能够借助一些技巧达到相似的效果——比如利用可变长度参数(varargs),或者是创建多个具有不同数量参数版本的方法来进行覆盖(overloading)[^2]: ```java // 使用 varargs 实现灵活的数量匹配 public double multiply(double... numbers){ double product=1d; for(double n :numbers){ product *=n ; } return product; } // Overloaded methods providing different levels of customization. public Rectangle createRectangle(){ return new Rectangle(); } public Rectangle createRectangle(int width,int height ){ return new Rectangle(width,height ); } ``` 以上代码片段分别介绍了两种常见的解决办法:一种是接受不定数目实参并通过循环累乘;另一种则是提供了几种不同程度定制可能性的新建矩形实例的方式。 #### 结论 综上所述,虽然严格意义上讲 java 没有所谓真正意义上面向用户的内置支持用于设置方法级别的预设数值选项的能力,但凭借巧妙运用诸如内部状态管理、构造多态化接口以及善用辅助工具集等手段完全可以克服此局限性并达成预期目标效果^.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值