引用數據類型有三種,數組,類,接口。
對於幾個基本變量有兩種操作方式:賦值和取值(也就是打印)。
下面的分析是自己定義了手機類然後測試類進行編譯運行的內存變化圖。
兩個類都需要運行,然後棧內存,堆內存,方法區。
Testphone.class先進內存(方法區的內存 )然後main進來;Phone.class進入方法區,然後是 color,brand,size屬性進入方法區;
程序運行的時候,main先壓棧運行,main在棧中開闢空間,空間開好之後,JVM就會從方法區複製 一份進到棧中執行。mian開始執行,然後new Phone();JVM在堆內存中開闢空間,
然後在打印結束後,mian方法結束運行。p引用與堆內存斷開連接,堆內存成爲垃圾。
集合的最大特點就是沒有指定長度的大小。
下面是一個利用集合容器傳遞對象的一個案例(點名系統)
代碼如下:
/*
隨機點名器,集合改進 (學生的姓名和年齡)
現實中有學生這個事物,使用定義類的形式,描述學生事物
屬性: 姓名,年齡
姓名存儲了數組, 將容器換成是集合
String[] s = {"",""};
集合中,存儲的是學生的姓名嗎? 應該存儲Student類型
存儲學生:
學生類型,存儲到集合中
總覽: 遍歷集合
隨機: 隨機數,作爲索引,到集合中找到元素
三個功能,共享的數據,集合容器,
定義三個方法,必須參數傳遞集合
*/
import java.util.ArrayList;
import java.util.Random;
public class CallName{
public static void main(String[] args){
//定義集合,存儲的是StudentName類型變量
ArrayList <StudentName> array = new ArrayList<StudentName>();
//調用添加方法
add (array);
//調用遍歷集合
printArrayList(array);
randomStudentName(array);
}
/*
隨機數,當作集合的索引,到集合中找到元素
*/
public static void randomStudentName(ArrayList<StudentName> array ){
Random r = new Random();
int number = r.nextInt( array.size());
//隨機數,索引,到集合中get
StudentName s = array.get(number);
System.out.println( s.name +" "+s.age);
}
/*
總覽學生的信息,遍歷集合
*/
public static void printArrayList(ArrayList<StudentName> array){
for(int i = 0 ; i < array.size();i++){
//存儲集合的時候, 集合.add(sn1) sn1 是StudentName類型變量
//獲取的時候,集合.get方法,獲取出來的是什麼, 還是StudentName類型變量
StudentName s = array.get(i);
System.out.println(s.name+" "+s.age);
}
}
/*
定義方法,實現存儲學生的姓名和年齡
創建StudentName類型變量,存儲到集合中
*/
public static void add (ArrayList<StudentName> array){
//創建StudentName類型變量
StudentName sn1 = new StudentName();
StudentName sn2 = new StudentName();
StudentName sn3 = new StudentName();
StudentName sn4 = new StudentName();
StudentName sn5 = new StudentName();
sn1.name = "張三1";
sn1.age = 201;
sn2.name = "張三2";
sn2.age = 202;
sn3.name = "張三3";
sn3.age = 203;
sn4.name = "張三4";
sn4.age = 204;
sn5.name = "張三5";
sn5.age = 205;
//將StudentName變量,存儲到集合中
array.add(sn1);
array.add(sn2);
array.add(sn3);
array.add(sn4);
array.add(sn5);
}
}
總結:一個思維:在面對一個事物的時候,用類去把他定義出來,然後包含了屬性和功能
集合的好處:可以實現任何數據任意的添加和刪除!