一、普通对象
People mxm = new People("Mo Xumin",24);
People hyx = new People("Huang Yingxue",22);
- 上面这两行代码,是我最开始给你讲的,创建两个个 'People' 对象。
- 先简单复习一下,'People' 是 'class name'(类名),'mxm' 或 'hyx' 是变量名,代表两个 'People' 类型的对象。
他们在内存里是两个单独的对象,在内存里的状态如下图所示:
- 每个方框代表一个 'People' 类型的对象,这时内存里有两个独立的 'People' 对象,一个的变量名是 'mxm',另一个的变量名是 'hyx'。
二、Array
People[] allpeoples = new People[5];
allpeoples[0] = mxm;
allpeoples[1] = hyx;
allpeoples[0].getName(); // 拿到值“Mo Xumin”
allpeoples[1].getName(); // 拿到值“Huang Yingxue”
上面的代码,是接着第一部分
- 'People' 后面加了个 [ ],代表这是一个 'People' 类型的数组,'allpeoples' 是这个数组的变量名;
- 'allpeoples' 是一个包含了 5 个 'People' 的数组;
- 'allpeoples[0]' 可以访问该数组的第 0 个位置,把 'mxm' 放到该数组的第 0 个位置;
- 'allpeoples[1]' 可以访问该数组的第 1 个位置,把 'hyx' 放到该数组的第 1 个位置;
执行完这段代码后,内存的情况如下图:
- 5 个连在一起的方框,也就是有 5 个连在一起的 'People' 类型的对象;
- 这 5 个方框连在一起,就是 'allpeoples' 代表的东西;
- 而其中每个单独的方框,都是一个 'People' 类型的对象;
- 其中第一个 'People' 方框是 'mxm'(因为我们执行了 'allpeoples[0] = mxm');
- 第二个 'People' 方框是 'hyx'(因为我们执行了 'allpeoples[1] = hyx');
三、ArrayList
这个只需要简单理解,和上面Array的三行代码一一对应的关系如下:
- Array 版
People[] allpeoples = new People[5];
allpeoples[0] = mxm; // 将数组第0个元素赋值为mxm
allpeoples[1] = hyx; // 将数组第1个元素赋值为hyx
allpeoples[0].getName(); // 拿到值“Mo Xumin”
allpeoples[1].getName(); // 拿到值“Huang Yingxue”
- ArrayList 版
ArrayList<People> allpeoples = new ArrayList<People>(5);
allpeoples.add(mxm); // 将数组第0个元素赋值为mxm
allpeoples.add(hyx); // 将数组第1个元素赋值为hyx
allpeoples.get(0).getName(); // 拿到值“Mo Xumin”
allpeoples.get(1).getName(); // 拿到值“Huang Yingxue”
- 你只需要理解到这个,ArrayList相当于把 'allpeoples[0]' 这种访问方式,改成了add()和get()函数