A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


//小明买东西购物单
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)知道这样写,但是不知道括号内的...的由来?为什么要这样写?

4 个回复

倒序浏览
public Foods[] add(Foods... f)中的...表示的是可变参数,是jdk1.5中的新特性,意思是你可以添加任意多个参数进去。
回复 使用道具 举报
参考可变参数。
回复 使用道具 举报
public Foods[] add(Foods... f) 可变参数,用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问变量参数。
回复 使用道具 举报
java1.5增加的新特性:可变参数。适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。
注意:可变参数必须位于最后一项。当可变参数个数多于一个时,必将有一个不是最后一项,所以只支持有一个可变参数。因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马