可变参数是什么?
- 可变参数的定义:方法中接收的参数不是固定的,而是根据需要传递。
怎么理解可变参数?
先给出图示意:
道具定义:
吸管:可变参数
球:带编号的珍珠
情景定义:
现有一杯珍珠奶茶,作者喝奶茶一般喜欢不带珍珠的奶茶,可偏偏就有这么一杯带珍珠的奶茶。
作者的做法是把吸管提得老高,并咬住吸管,避免珍珠误入。
这个时候,意外出现了!我突然吸入一吸溜珍珠。
public static void main(String[] args) {
Me me = new Me();
me.stomache(1, 2, 3, 4);
})
因为我有洁癖,我需要计算我到底吞了几颗珍珠, 我太敏感了,竟然还不知不觉给它们编号!
public int stomache(int ... naiCha){
int sum = 0;
for ( int i = 0; i < naiCha.length; i++){
System.out.printf("我竟已吸入了第%d颗珍珠!\n", naiCha[i]);
}
return sum;
}
随着嘟嘟嘟嘟四声,四颗珍珠落胃。但我突然在思考一件事情,我的食道究竟是一次性吸溜了四颗珍珠还是嘟噜嘟噜地一颗颗吸溜?这个时候我准备DeBug一下。
毫无疑问!我一次性吸溜了四颗珍珠。至此,第一个情景告一段落,让我们来总结一下。
- 可变参数:形象比喻成吸管,不管你咋吸,只要是吸到胃里的,都算一次性吸!(就是一个数组)
- 现在我要给出另一个情景:我吸溜了珍珠,就代表我对珍珠没有洁癖了吗?
上代码走胃!
没错,食道想要顺畅地吸溜一组珍珠,就需要先喝点奶茶润润食道,小时候大家吃胶囊药不会有人一颗一颗吃吧?
总结:
至此,两种情景已经全部总结完了,这是对可变参数在传参的注意点。
- 可变传参应用在方法参数上,在方法体内部定义会报错哦!(不信大家去敲代码)
- 可变参数传参一定要在最后,就像我喝奶茶就算不喜欢吃珍珠也会在最后吃几颗回回本钱。
- 可变参数不一定要接受一个数组,可以是一大串同类型的数据呢!(但,是一次性吸溜进胃!)
最后给出完整Demo
public class Me {
// public int stomache(int ... naiCha, String milk){
// int sum = 0;
// for ( int i = 0; i < naiCha.length; i++){
// System.out.printf("我竟已吸入了第%d颗珍珠!\n", naiCha[i]);
// }
// return sum;
// }
public int stomache1(String milk,int ... naiCha){
int sum = 0;
System.out.println(milk+"已经入胃啦!开工!");
for ( int i = 0; i < naiCha.length; i++){
System.out.printf("我竟已吸入了第%d颗珍珠!\n", naiCha[i]);
}
return sum;
}
public static void main(String[] args) {
Me me = new Me();
// me.stomache(xi, milk);
int[] xi = {1, 2, 3, 4};
String milk = "饮到阿萨姆啦~";
me.stomache1(milk, 1, 2, 3, 4);
me.stomache1(milk, xi);
}
}