Think in Java —— JAVA 對象

1.用引用操做對象java

    在java當中一切都被視做爲對象,在這具備共同特徵的時候就能夠採用單一固定的語法來對這些對象進行處理和分析。儘管一切都當作了對象,但真正操縱的並非對象自己,而是對象的一個「引用」(舉一個書中的例子就很明瞭了,遙控器和電視,電視是一個對象,而遙控器是所謂的「引用」。只要掌握遙控器這個「引用」就能夠操控遙控器「對象」,實際上操控的是遙控器而非對象自己)。此外就算是沒有電視機,引用依然能夠存在。固然若是你須要去使用遙控器,就要和對象進行綁定起來。這就是引用和對象的關係了。安全

2.對象存儲在什麼地方url

    在程序運行時,對象是怎樣進行放置安排的?內存又是怎樣分配的。spa

  •     寄存器這是最快的存儲區,由於它位於不一樣於其它存儲區的地方——處理器內部。可是寄存器的數量極其有限,因此寄存器根據需求進行分配,你不能直接控制,也不能在程序中感受到寄存器的存在。
  • 堆棧。位於通用RAM(隨機訪問存儲器)中,但經過堆棧指針能夠從處理器那裏得到直接支持。堆棧指針若向下移動,則分配新的內存;若向上移動,則釋放這些內存。這是一種快速有效的分配存儲方法,僅次於寄存器。建立程序時,Java系統必須知道存儲在堆棧內全部項的確切生命週期,以便上下移動堆棧指針。這一約束限制了程序的靈活性,因此某些Java數據存儲於堆棧中——特別是對象引用,可是Java對象並不存儲在其中。
  • 堆。一種通用的內存池(也位於RAM區),用於存放全部的Java對象。堆不一樣於堆棧的好處是:編譯器不須要知道存儲的數據在堆裏存活了多長時間。所以,在堆裏分配存儲有很大的靈活性。當須要一個對象時,只需用new寫一行簡單的代碼,當執行這行代碼時,會自動在堆裏進行存儲分配。這種靈活性必需要付出相應的代價:用堆進行存儲分配和清理可能比用堆棧進行存儲分配須要更多的時間。
  • 常量存儲。常量值一般直接存放在程序代碼內部,這樣作事安全的,由於它們永遠不會被改變。有時,在嵌入式系統中,常量自己會和其它部分隔離開,因此在這種狀況下,能夠選擇將其存放在ROM中
  • 非RAM存儲。若是數據徹底存活於程序以外,那麼它能夠不受程序的任何控制,在程序沒有運行時也能夠存在。其中兩個基本的例子是流對象和持久化對象。在流對象中,對象轉化成字節流,一般被髮送給另外一臺極其。在「持久化對象」中,對象唄存放在磁盤上,所以,即便程序終止,它們仍能夠保持本身的狀態。這種存儲方式的技巧在於:把對象轉化成能夠存放在其餘媒介上的事物,在須要時,能夠恢復成常規的、基於RAM的對象。Java提供了輕量級持久化的支持。
相關文章
相關標籤/搜索