一、普通對象
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()函數