/*
 * 功能:演示java集合的用法
  */
package com.test1;
//用java集合时,先要引入 java.util.*;包
import java.util.*;public class Demo6_6 { public static void main(String[] args) {
// TODO Auto-generated method stub

//定义一个ArrayList对象
ArrayList al=new ArrayList();
//创建一个员工对象
Clerk clerk1=new Clerk("宋江",50,1000);
//将clerk1加入到al中
al.add(clerk1);
//继续创建一个员工对象
Clerk clerk2=new Clerk("吴用",30,1500);
al.add(clerk2);
//如何访问al中对象
//访问第一个对象

Clerk temp =(Clerk)al.get(0);
System.out.println(temp.getName());
}}
//定义一个员工类
class Clerk
{
//构建员工的构造方法
private String name;
private int age;
private float salary;
public Clerk(String name,int age,float sal)
{
this.name=name;
this.age=age;
this.salary=sal;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public float getSalary() {
return salary;
}
public void setSalary(float salary) {
this.salary = salary;
}

}我不明白的是这一句:
  Clerk temp =(Clerk)al.get(0);
Clerk temp代表的是什么意思,为何Clerk temp可以接收arrayList返回的对象呢
而这一句中System.out.println(temp.getName()); 的temp为何又能调用getName方法
希望有明白的老师帮我解答下,这个问题没什么技术含量,但是困扰我很久了,求帮忙

解决方案 »

  1.   

    al 存的是 Clerk的对象集
    比如 你们班class 存了你们这些学生。
    0代表学号,假如你的学号是0.
    al.get(0)就代表你这个对象。理解了吗?
    Clerk temp =(Clerk)al.get(0);
    现在这个temp已经代表是你了。
    然后调用你这个对象的方法。
    temp.getName()就比如得到你的姓名。
      

  2.   

    Clerk temp =(Clerk)al.get(0);
    这句话我的理解是将al.get(0);这个对象赋给temp这个空对象,但问题是我没有new一个temp对象,直接就可以接收吗
      

  3.   

    哦,是这个问题啊。这个temp 叫引用,作用就是用来标示对象的。
    Clerk temp = new Clerk();这种写法的意义,是创建一个Clerk对象,然后 temp引用指向改对象。
    如果有对象
    Clerk live = new Clerk();
    temp = live;
    temp 指向 live 指向的对象。
    上面的意思就是 temp 指向al在 index = 0位置上的对象。