JAVA程式設計思想學習筆記(二)一切都是物件
阿新 • • 發佈:2019-01-09
一切都是物件
用引用操作物件
用一個類名,宣告一個變數,就是聲明瞭一個引用,比如類String
String s;
s就是類String的一個引用,引用並不是一個物件,但是它是可以控制相應的物件,相當於遙控器。引用不會分配儲存空間,new個物件之後才會分配空間。
必須由你建立所有物件
有5個不同的地方可以儲存資料:
- 暫存器
最快的儲存區,但是不能直接控制。 - 堆疊
位於通用RAM,通過堆疊指標使用,指標下移分配新記憶體,上移釋放記憶體。是一種快速有效的分配儲存方法。特別的,物件的引用存放在這裡。 - 堆
一種通用記憶體池,用於儲存所有JAVA物件。 - 常量儲存
常量值通常直接存放在程式程式碼內部,這樣做是安全的,因為它們永遠不會
被改變。 - 非RAM儲存
如果資料完全存活於程式之外,那麼它可以不受程式的任何控制,在程式沒有執行時也可以存在。兩個基本例子就是流物件和持久化物件
特例,基本型別:
對於基本型別,與c相同,建立一個並非引用的變數,這個變數的值儲存在堆疊中。基本型別都有包裝器類,使得可以在堆建立一個非基本物件。
除此之外,還提供了兩個高精度計算的類:BigInteger和BigDecimal
永遠不需要銷燬物件
在java裡,不用像C++那樣,考慮物件的銷燬問題。垃圾回收器機制幫助程式設計師監控每一個用new生成的物件,一旦一個物件不會再引用了,就會自動銷燬該物件。
建立新的資料型別:類
類用class關鍵字來定義,類的成員變數會有預設值,即不初始化也不會像C++那樣得到任意值,雖然有時候這個預設值對於你的程式來說,並不適用。
預設值表如下:
另外,值得注意的是:只有類的基本成員變數會有預設值,如果是一個區域性變數,即非類的成員變數的話,這個變數的值得到的也可能是任意值。
static關鍵字
static定義靜態成員變數和靜態方法,static宣告的變數和方法,是這個類所有物件共享的,同時可以不建立物件,可以直接使用類名進行呼叫。例如:
class A{ static int i=1; } A a=new A(); a.i++; A.i++;
最後輸出i的值為3,因為無論是物件還是類名,指向的都是同一個i。