上兩次課我們知道了,java語言中的兩種數(shù)據(jù)類型。這節(jié)課呢,我們對上兩次課做一個補充,也加深一下理論知識的學(xué)習(xí)。理論的東西是很有用的啊。這節(jié)課介紹基本類型變量和引用類型變量。
Java中數(shù)據(jù)類型分為兩大類,上次課已經(jīng)講完了,是基本類型和對象類型。相應(yīng)的,變量也就有兩種類型:基本類型和引用類型?;绢愋妥匀徊挥谜f了,它的值就是一個數(shù)字,一個字符或一個布爾值。引用類型,可是引用類型呢?它是一個對象類型的啊,值是什么呢?它的值是指向內(nèi)存空間的引用,就是地址,所指向的內(nèi)存中保存著變量所表示的一個值或一組值。很好理解吧,因為一個對象,比如說一個人,不可能是個數(shù)字也不可能是個字符啊,所以要想找它的話只能找它的地址了。
羅唆:
我們在學(xué)習(xí)計算機的過程中,所謂的難的東西,就是以前沒有聽過的概念,和不常用的思想。像是這個引用類型的概念就是以前不常用的,基本類型當(dāng)然好理解不講大家也知道。所以我們對于這樣陌生的概念我們只要多琢磨一下就會明白的。
我們廢話少說,接下來看看這兩種類型變量的不同處理吧?;绢愋妥匀皇呛唵?,聲明是自然系統(tǒng)就給它空間了。例如,
int baijq; baijq=250; //聲明變量baijq的同時,系統(tǒng)給baijq分配了空間。
引用類型就不是了,只給變量分配了引用空間,數(shù)據(jù)空間沒有分配,因為誰都不知道數(shù)據(jù)是什么啊,整數(shù),字符?我們看一個錯誤的例子:
MyDate today;
today.day = 4; //發(fā)生錯誤,因為today對象的數(shù)據(jù)空間未分配。
那我們怎么給它賦值啊?引用類型變量在聲明后必須通過實例化開辟數(shù)據(jù)空間,才能對變量所指向的對象進行訪問。舉個例子:
MyDate today; //將變量分配一個保存引用的空間
today = new MyDate(); //這句話是2步,首先執(zhí)行new MyDate(),給today變量開辟數(shù)據(jù)空間,然后再執(zhí)行賦值操作。
小總結(jié): 剛才說了一大堆,其實就是一件事。如果是引用類型的變量,必須先得new一個對象出來。不new哪來的對象啊,不new哪有數(shù)據(jù)空間???沒有數(shù)據(jù)空間怎么能訪問呢?這回明白了吧!
我們還有個問題沒有說,引用類型變量怎么賦值?這個就不是很難了。舉個例子:
MyDate a,b; //在內(nèi)存開辟兩個引用空間
a = new MyDate(); //開辟MyDate對象的數(shù)據(jù)空間,并把該空間的首地址賦給a
b = a; //將a存儲空間中的地址寫到b的存儲空間中
如圖5-1