private ArrayList aa=null;
spgl()
{
aa=new ArrayList();//
}
我想问一下,它这个地方为什么不直接ArrayList aa=new ArrayList

解决方案 »

  1.   

    还有它为什么是用private修饰?
      

  2.   

    Sp sp=(Sp)aa.get(i);这个它为什么要强制转换为Sp类?
    public void spxx(String bh)
    {
    int i;
    for(i=0;i<aa.size();i++)
    {
    Sp sp=(Sp)aa.get(i);
    if(sp.getBianhao().equals(bh))
    {
    System.out.println("该食品的信息为:");
    System.out.println("食品编号:"+bh);
    System.out.println("食品名称:"+sp.getMingcheng());
    System.out.println("食品价格:"+sp.getJiage()+"元");
    break;
    }
    }
    if(i=aa.size())
    System.out.println("对不起,无此食品!");
    }
      

  3.   

    先声明,不初始化,这样不用分配内存空间,用到的时候再初始化
    private修饰,设置访问权限,防止其他类访问
    Sp sp=(Sp)aa.get(i); 不强制转换,不知道aa.get(i)是什么东东
      

  4.   

    就一个食品管理的类,底下是完整代码
    class Spgl
    {
    private ArrayList aa=null;
    Spgl()
    {
    aa=new ArrayList();
    }
    public void addsp(Sp sp)
    {
    aa.add(sp);
    System.out.println("添加食品成功!");
    }
    public void spxx(String bh)
    {
    int i;
    for(i=0;i<aa.size();i++)
    {
    Sp sp=(Sp)aa.get(i);
    if(sp.getBianhao().equals(bh))
    {
    System.out.println("该食品信息为:");
    System.out.println("食品编号:"+bh);
    System.out.println("食品名称:"+sp.mingcheng);
    System.out.println("食品价格:"+sp.jiage+"元");
    break;
    }
    }
    if(i==aa.size())
    System.out.println("对不起,无此食品!");
    }
    public void spjg(String bh,float jg)
    {
    int i;
    for(i=0;i<aa.size();i++)
    {
    Sp sp=(Sp)aa.get(i);
    if(sp.getBianhao().equals(bh))
    {
    sp.setJiage(jg);
    System.out.println("修改食品价格成功!");
    break;
    }
    }
    if(i==aa.size())
    System.out.println("对不起,无此食品!");
    }
    public void delsp(String bh)
    {
    int i;
    if(aa.size()==0)
    System.out.println("对不起,仓库中已没有任何食品!");
    for(i=0;i<aa.size();i++)
    {
    Sp sp=(Sp)aa.get(i);
    if(sp.getBianhao().equals(bh))
    {
    aa.remove(i);
    System.out.println("删除食品成功");
    break;
    }
    }
    if(i==aa.size())
    System.out.println("对不起,无此食品!");
    }
    }
      

  5.   

    ArrayList<>() <>里面给类型,被定义为只能存放对应类型的数据,你没给类型,但是你自己知道存的是什么类型的  出来要转换 不转换你用不了该类型的方法
      

  6.   

    你这个是集合框架的数组集合ArrayList,你问的是,为什么先不new对象,而是后面在选择new对象?这个问题你需要了解ArrayList的算法即可知道为什么了,可以参照我的文章http://blog.csdn.net/Java_Dmz/article/details/78076872
      

  7.   

    Sp sp=(Sp)aa.get(i);
    这一行(Sp)有什么作用
      

  8.   


    这个是强制转换,就是说如果不添加(Sp),系统就不知道 ArrayList aa这个集合里保存的是什么对象,可能是Integer,可能是String,可能是Sp的对象
    所以就不能Sp sp=(Sp)aa.get(i);这样用Sp的对象接收,因为aa.get(i)获取的是不确定的,系统不知道它是个什么东西,你添加了强制转换,就相当于
    告诉系统,这里面保存的就是Sp的对象,所以才能用Sp sp接收
    不想强制转换就ArrayList<Sp> aa = null;这样定义,声明List里面只能保存Sp