第二章 一切都是對象
用引用(reference)操縱對象
String s = "asdf";
String s;
但這裡所建立的隻是引用,并不是對象。如果此時向s 發送一個消息,就會傳回一個運作時刻錯誤。這是因為此時s 實際上沒有與任何事物相關聯(即沒有電視機)。是以,一種安全的做法是:建立一個引用的同時便進行初始化。String s = "asdf";
必須由你建立所有對象
有六個不同的地方可以存儲資料:
1. 寄存器(register).2. 堆棧(stack).3. 堆(heap).4. 靜态存儲(static storage).5. 常量存儲(constant storage).6. 非 RAM 存儲.
對象作用域(scope of object)
Java 有一個“ 垃圾回收器”,用來監視用new 建立的所有對象,并辨識那些不會再被引用的對象。随後,釋放這些對象的記憶體空間,以便供其它新的對象使用。也就是說,你根本不必擔心記憶體回收的問題。你隻需要建立對象,一旦不再需要,它們就會自行消失。這樣做就消除了這類程式設計問題:即所謂的“記憶體溢出”,即由于程式員忘記釋放記憶體而産生的問題。
建立新的資料類型:類
域(field)和方法(method)
當變量作為一個類的成員使用時,Java 才確定給定其預設值,以確定那些是基本類型的成員變量得到初始化(C++沒有此功能),防止産生程式錯誤。但是,這些初始值對你的程式來說,可能是不正确的,甚至是不合法的。是以最好明确地對變量進行初始化.然而上述確定初始化的方法并不适用于“局部”變量(即并非是某個類的屬性)。是以,如果在某個方法中有這樣定義:
方法(Method)、參數(argument)和傳回值(return value)
Static 關鍵字
通過Static 關鍵字,可以滿足這兩方面的需要。當你聲明一個事物是Static 時,就意味着這個資料或方法不會與包含它的那個類的任何對象執行個體關聯在一起。是以,即使從未建立某個類的任何對象,也可以調用其Static 方法或通路其Static 資料。通常,你必須建立一個對象,并用它來通路資料或方法。因為非Static 資料和方法必須知道它們一起運作的特定對象。由于在用Static 方法前,不需要建立任何對象.
in Java example program.
* Displays a string and today's date.
* @author Bruce Eckel
* @author www.BruceEckel.com
* @version 2.0
*/
public class HelloDate {
/** Sole entry point to class & application
* @param args array of string arguments
* @return No return value
* @exception exceptions No exceptions thrown
public static void main(String[] args) {
System.out.println("Hello, it's: ");
System.out.println(new Date());
}
} ///:~