Java編程思想——知識卡片01_02

寫在前面

首先我想說的是 Java編程思想——知識卡片 將是一系列文章,文章的內容是我閱讀《Java編程思想》這本書的心得體會,那麼我爲何要寫這一系列的文章呢?緣由有一下幾個方面:程序員

  • 重拾Java,因工做項目的特殊性,我已經一年多沒使用Java語言了。
  • 想利用本身的業餘時間寫點東西幫助那些須要幫助的人。
  • 將整本書的知識碎片化,充分利用本身零碎的時間。

通常狀況下,最新文章會在個人微信公衆號:Java編程社區 更新,感興趣的話呢,能夠加加關注。
好了,咱們開始進入正題:數據庫

卡片0一、用引用操做對象

學Java的人都知道,Java是一門面向對象的語言(OOP),儘管Java是基於C++的,可是相比之下,Java是一種更「純粹」的面向對象程序設計語言。正所謂「萬物皆對象」,Java語言假設咱們只進行面向對象的程序設計,也就是說,咱們開始使用Java進行設計以前必須轉換思想,將咱們的注意力轉換到對象上來。這個是咱們使用Java語言的基本功。編程

每種編程語言都有本身的數據處理方式。有些時候,程序員必須時刻留意準備處理的是什麼類型,是直接操縱元素,仍是用某種基於特殊語法的間接表示來操縱對象?在C和C++裏咱們使用的是指針。在Java裏這一切都獲得了簡化,由於「萬物皆對象」,一切都被視爲對象。儘管一切都看做對象,但操縱的標識符其實是對象的一個引用。這裏經過一個生活中的例子來幫助理解。生活中咱們使用遙控器(引用)來操縱電視機(對象)。當要改變電視機的頻道或音量時,實際操縱的是遙控器(引用),再由遙控器來控制電視(對象)。若是想在房間裏四處走走,同時又能操縱電視機,那麼只需攜帶遙控器(引用)而不是電視機(對象)
咱們來建立一個String引用:安全

String str;

這裏的str只是一個引用,並不是對象,引用是能夠獨立存在的,並不必定須要一個對象與之關聯,就如即便沒有電視機,遙控器也能夠獨立存在。可是上面這種建立並不安全,安全的作法是,咱們建立引用的同時進行初始化。好比:微信

String str = "hello";

卡片0二、程序運行時,內存是怎樣分配的呢?

程序在運行時,有五個不一樣的地方能夠存儲數據:編程語言

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

今天就到這了。。。
歡迎你們關注個人微信公衆號 Java編程社區 一塊兒交流學習學習

相關文章
相關標籤/搜索