這1章節我們來討論1些創建和操縱對象。
說來,上面的兩個話題都看似簡單。例如:
使用new創建對象:
使用援用操縱對象
但是需要注意的是,如果單純只是上面的那句,當s調用對象的方法時,系統將會出現異常,由于s還沒有初始化。所以,1般的做法是:
那末,如果這樣的話,這個話題說完了,我們下面將會擴大這個話題,使用2⑶個章節來討論他們的擴大話題。
1.創建的對象存儲在哪里?
(1)寄存器-Registers。
寄存器在cup里面,它的運算最快,但是空間小,因此需要根據需求來分配,而且他不會根據我們的代碼來分配,而是系統自己計算分配。
寄存器作用:
a.可將寄存器內的數據履行算術及邏輯運算
b.存于寄存器內的地址可用來指向內存的某個位置,即尋址
c.可以用來讀寫數據到電腦的周邊裝備。
(2)棧-stack
位于ram
存儲對象援用的地方,不存儲對象。
當需要1個對象,在堆棧里面查詢援用,然后到堆(heap)去找到java對象,再把對象壓到棧里面進行準備進行運算,當用完了對象,它會拋棄掉這個對象。
棧使用的是1級緩存, 他們通常都是被調用時處于存儲空間中,調用終了立即釋放。
棧的優勢是,存取速度比堆要快,僅次于直接位于CPU中的寄存器。但缺點是,存在棧中的數據大小與生存期必須是肯定的,缺少靈活性。另外,棧數據在多個線程或多個棧之間是不可以同享的,但是在棧內部多個值相等的變量是可以指向1個地址的。堆的優勢是可以動態地分配內存大小,生存期也沒必要事前告知編譯器,Java的垃圾搜集器會自動收走這些不再使用的數據。但缺點是,由于要在運行時動態分配內存,存取速度較慢。
(3)堆-heap
位于ram
速度比棧低,存儲對象的地方。
但是它比棧靈活,動態分配對象的存儲空間,缺點是,分配和清算對象的時間較長
(4)常量存儲-rom
常量1般是不改變的,所以1般存儲在rom里面
(5)非ram存儲-硬盤等
總結,這1章節介紹了對象的存儲。
這1章節就到這里,謝謝。