第4章類、對象和方法
瞭解類的基礎知識、瞭解如何創建類、理解如何給引用變量賦值、創建方法,返回值,並使用形參,使用return關鍵字、從方法返回值、向方法添加形參,使用構造函數,創建帶形參的構造函數。
這一章也是比較基礎的,主要收穫搞清楚new運算符和引用,並學習了Java垃圾回收。
如何創建對象
下面這行代碼聲明瞭一個名爲minivan的Vehicle類型的變量。
Vehicle minivan = new Vehicle();
該聲明完成兩個功能。首先,它聲明一個名爲minivan的Vehicle類型的變量。該變量有定義對象,它是一個可以引用對象的變量。其次聲明創建了對象的一個實際的副本,並把對象的引用賦值給了minivan。new運算符爲對象分配內存,並返回一個對它的引用。該引用有new分配的對象在內存中的地址。然後,把引用存儲在變量中。因此,在Java中,必須動態分配所有的類對象。
把上面的代碼拆開來寫:
Vehicle minivan;
minivan = new Vehicle();
第一行把nimivan聲明爲Vehicle類型對象的引用。nimivan是一個可以引用對象的變量,但是它本身不是對象。因此,minivan不引用對象。
第二行創建了一個新的Vehicle對象,並把它的引用賦值給了minivan。
new運算符可以用於創建任何類類型的對象。new運算符返回對新創建對象的引用。
引用變量和賦值
Vehicle car1 = new Vehicle();
Vehicle car2 = car1;
car1和car2引用相同的對象。但是car1和car2是沒有關係的。對car2的賦值只是改變了car2所引用的對象而已。
void方法的返回方式
void方法的返回方式有兩種,到達右花括號或者執行return語句。
注意void方法中可以寫這樣的return語句的。
public static void display(){
int i=3;
if (i>=1){
System.out.println(i);
i--;
}else return;
}
垃圾回收
Java的垃圾回收機制會自動回收對象,透明的在後臺操作。具體工作方式爲:當不存在對某對象的引用時,該對象就被認定爲沒有存在的必要了,它所佔用的內存就要被釋放,被回收的內存可以用於以後的分配。
使用finalize()方法來演示垃圾回收和終止。
protected void finalize()
在對象最後被垃圾回收器銷燬之前調用它。
public class FDemo {
int x;
FDemo(int i){
x=i;
}
protected void finalize(){
System.out.println("Finalizing "+x);
}
void generator(int i){
FDemo o = new FDemo(i);
}
}
public class Finalize {
public static void main(String[] args){
int count;
FDemo ob = new FDemo(0);
for (count=1;count<1000000;count++){
ob.generator(count);
}
}
}
創建和銷燬1000000個對象