黑马程序员技术交流社区
标题:
public Foods[] add(Foods... f)知道这样写,但是不知道括号内的...的由来
[打印本页]
作者:
常万
时间:
2012-4-9 18:00
标题:
public Foods[] add(Foods... f)知道这样写,但是不知道括号内的...的由来
//小明买东西购物单
package javaday01;
/**
* @author joy
*
*/
public class BuyDemo
{
/**
* @param args
*/
public static void main(String[] args)
{
Personss p= new Personss(20,"小明");
Foods[] fs= null;
/*
Foods f1 = new Foods("牛奶",3.5);
Foods f2 = new Foods("薯片",5.5);
Foods f3 = new Foods("瓜子",8.5);
Foods f4 = new Foods("花生",4.5);
*/
fs=p.add(new Foods("牛奶",3.5),new Foods("薯片",5.5),new Foods("瓜子",8.5),new Foods("花生",4.5));
p.buy(fs);
}
}
class Personss
{
private int age;
private String name;
Personss(int age,String name)
{
this.age=age;
this.name=name;
}
public void buy(Foods[] f)//买的商品加入购物车
{
System.out.println("\t商品名称"+"\t商品价格");
for(int x=0;x<f.length;x++)
{
System.out.println("\t"+f[x].getName()+"\t"+f[x].getPrice());
}
System.out.println("\t合计"+"\t"+pay(f));
}
public Foods[] add(Foods... f)
{
return f;
}
public int pay(Foods[] payfor)
{
int sum=0;
for(int x=0;x<payfor.length;x++)
{
if(payfor[x].getPrice()!=0)
{
sum+=payfor[x].getPrice();
}
}
return sum;
}
}
class Foods
{
private String name;
private double price;
Foods(String name,double price)
{
this.name=name;
this.price=price;
}
public String getName()
{
return name;
}
public double getPrice()
{
return price;
}
}
public Foods[] add(Foods... f)知道这样写,但是不知道括号内的...的由来?为什么要这样写?
作者:
邓海涛
时间:
2012-4-9 18:05
public Foods[] add(Foods... f)中的...表示的是可变参数,是jdk1.5中的新特性,意思是你可以添加任意多个参数进去。
作者:
张卯
时间:
2012-4-9 18:06
参考可变参数。
作者:
李震 李震 李震
时间:
2012-4-9 18:07
public Foods[] add(Foods... f) 可变参数,用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问变量参数。
作者:
张卯
时间:
2012-4-9 18:07
java1.5增加的新特性:可变参数。适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。
注意:可变参数必须位于最后一项。当可变参数个数多于一个时,必将有一个不是最后一项,所以只支持有一个可变参数。因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2