為了賬號安全,請及時綁定郵箱和手機立即綁定

貓哥帶你去戰斗——Java Web開發——Java篇[1]——從內存講起

2016.12.27 10:43 2577瀏覽

首先從最宏觀上講,Java程序設計就像開公司,開公司是為了得到一個好盈利,Java程序設計是為了得到一個好結果。當然公司可以持續盈利,Java程序也可以持續響應用戶輸入,持續輸出計算結果。

開公司有兩件事最重要,一個是物質基礎,包括金錢、人力、辦公樓、倉庫、各類設備等等;另一個是公司的辦事方式,即運行制度、公司文化、公司管理方式、公司辦事制度決定的公司在處理事的時候采取的具體方式。對應到Java語言中,物質基礎即Java程序中設定的常量、變量、字段、成員變量等這些概念;辦事方式即Java中的方法、函數這些概念。今日暫且不表辦事方式,咱先把物質基礎說清楚。(題外話,面向過程和面向對象的區別就是公司運作方式的區別,面向過程所有的事情依賴于老板,老板讓誰帶上哪些資源以哪種方式辦事,老板勢必親為,如果老板牛X,公司灰常高效,C語言就是這般。而面向對象把公司劃分很多部門,每個部門有自己的辦公室和設備資金等,有自己的辦事方式,老板大體給個方向,調動多個部門配合完成一件事,所以面向對象老板也得強,還得有面向對象的思想,如果老板事必躬親,那設這么多個部門簡直就是浪費了;貓哥看到很多童鞋用Java寫極其面向過程的語句,感覺挺累,當老板不就得讓別人辦事么。題外話比正題都多,也是夠了....)

剛剛都是些邏輯的概念,現在回歸Java語言的物質基礎——內存。Java基本上就是使用RAM隨機存儲器的,RAM有一塊叫堆、還有一塊叫堆棧。堆非常好理解,就是一大片內存,誰想要用,就申請一堆,那這一堆地方就屬于這個人了。至于堆棧呢,稍微復雜點,管理的更細點,分先來后到,按順序分配,所以使用效率高點,反映到程序中就是存取速度稍微快點。OK,那Java語言的設計者就動了個小心思,他把Java中的常量、變量、字段、對象等需要存儲的東西分為了兩種,一種是基本類型、另一種是非基本類型。所謂基本類型就是像整數(Java中為int)、小數(Java中為double)等最常用的,設置為基本類型,因為常用所以放在了堆棧區。另一種非基本類型呢,就是字符串(String)還有各種各樣的自定義的類(Class),這一部分放在了堆里面。

講來講去,好像我們作為程序員沒必要知道這些,我們會用就行。這里關鍵是有一個灰常重要的區別,就是基本類型的量直接存儲變量的值,而非基本類型的量存儲變量的引用

好了,具體講一下。
int i=0;int 表示基本類型整數類型,i是一個整數類型的變量,它存儲的值就是0。這個太好理解了,這個值0存儲在堆棧上,完事。
string i="哈哈,我很好";string 表示非基本類型字符串類型,i是一個字符串類型的變量,它存儲的值是"哈哈,我很好"嗎?非也非也,問題就在這,此處i存儲的是一個引用,你可以認為是一個地址比如"中國北京001街區001號"(內存那么大的空間,總得分下地址,誰是幾號樓那個屋子),這個地址是堆那塊區域的地址,這個地址里保存的內容才是"哈哈,我很好"。那i的值其實是"中國北京001街區001號"。

如果上面講的不清楚,那也沒關系,等講到函數傳值還是傳引用的時候,咱再結合實例講講。如果還不明白,那也沒事,會用才是王道。

點擊查看更多內容

本文原創發布于慕課網 ,轉載請注明出處,謝謝合作

5人點贊

若覺得本文不錯,就分享一下吧!

評論

相關文章推薦

正在加載中
意見反饋 幫助中心 APP下載
官方微信

舉報

0/150
提交
取消
lpl竞猜