成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

Lyux / 3316人閱讀

摘要:堆棧位于通用隨機(jī)訪問存儲器中,但通過堆棧指針可以從處理器那里獲得直接支持。堆棧指針若向下移動,則分配新的內(nèi)存若向上移動,則釋放那些內(nèi)存。創(chuàng)建程序時,系統(tǒng)必須知道存儲在堆棧內(nèi)所有項的確切聲明周期,以便上下移動堆棧指針。

寫在前面

首先我想說的是 Java編程思想——知識卡片 將是一系列文章,文章的內(nèi)容是我閱讀《Java編程思想》這本書的心得體會,那么我為什么要寫這一系列的文章呢?原因有一下幾個方面:

重拾Java,因工作項目的特殊性,我已經(jīng)一年多沒使用Java語言了。

想利用自己的業(yè)余時間寫點東西幫助那些需要幫助的人。

將整本書的知識碎片化,充分利用自己零碎的時間。

一般情況下,最新文章會在我的微信公眾號:Java編程社區(qū) 更新,感興趣的話呢,可以加加關(guān)注。
好了,我們開始進(jìn)入正題:

卡片01、用引用操作對象

學(xué)Java的人都知道,Java是一門面向?qū)ο蟮恼Z言(OOP),盡管Java是基于C++的,但是相比之下,Java是一種更“純粹”的面向?qū)ο蟪绦蛟O(shè)計語言。正所謂“萬物皆對象”,Java語言假設(shè)我們只進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計,也就是說,我們開始使用Java進(jìn)行設(shè)計之前必須轉(zhuǎn)換思想,將我們的注意力轉(zhuǎn)換到對象上來。這個是我們使用Java語言的基本功。

每種編程語言都有自己的數(shù)據(jù)處理方式。有些時候,程序員必須時刻留意準(zhǔn)備處理的是什么類型,是直接操縱元素,還是用某種基于特殊語法的間接表示來操縱對象?在C和C++里我們使用的是指針。在Java里這一切都得到了簡化,因為“萬物皆對象”,一切都被視為對象。盡管一切都看作對象,但操縱的標(biāo)識符實際上是對象的一個引用。這里通過一個生活中的例子來幫助理解。生活中我們使用遙控器(引用)來操縱電視機(jī)(對象)。當(dāng)要改變電視機(jī)的頻道或音量時,實際操縱的是遙控器(引用),再由遙控器來控制電視(對象)。如果想在房間里四處走走,同時又能操縱電視機(jī),那么只需攜帶遙控器(引用)而不是電視機(jī)(對象)。
我們來創(chuàng)建一個String引用:

String str;

這里的str只是一個引用,并非對象,引用是可以獨立存在的,并不一定需要一個對象與之關(guān)聯(lián),就如即使沒有電視機(jī),遙控器也可以獨立存在。但是上面這種創(chuàng)建并不安全,安全的做法是,我們創(chuàng)建引用的同時進(jìn)行初始化。比如:

String str = "hello";
卡片02、程序運行時,內(nèi)存是怎樣分配的呢?

程序在運行時,有五個不同的地方可以存儲數(shù)據(jù):

1、寄存器:這是最快的存儲區(qū),因為他位于不同于其他存儲區(qū)的地方--處理器內(nèi)部。但是寄存器的數(shù)量及其有限,所以寄存器根據(jù)需求進(jìn)行分配,你不能直接控制,也不能在程序中感覺到寄存器存在的任何跡象。

2、堆棧位于通用RAM(隨機(jī)訪問存儲器)中,但通過堆棧指針可以從處理器那里獲得直接支持。堆棧指針若向下移動,則分配新的內(nèi)存;若向上移動,則釋放那些內(nèi)存。這是一種快速有效的分配存儲的方法,僅次于寄存器。創(chuàng)建程序時,Java系統(tǒng)必須知道存儲在堆棧內(nèi)所有項的確切聲明周期,以便上下移動堆棧指針。這一約束限制了程序的靈活性,所以雖然有些Java數(shù)據(jù)存儲在堆棧中--特別是對象引用,但是Java對象并不存儲于其中。

3、一種通用的內(nèi)存池(也位于RAM區(qū)),用于存放所有的Java對象。堆不同于堆棧的好處是:編譯器不需要知道存儲的數(shù)據(jù)在堆里存活多長時間。因此,在堆里分配有很大的靈活性。當(dāng)需要一個對象時,只需用new寫一行簡單的代碼,當(dāng)執(zhí)行這行代碼時,會自動在堆里進(jìn)行存儲分配。當(dāng)然,為這種靈活性必須要付出相應(yīng)的代價:用堆進(jìn)行存儲分配和清理可能比用堆棧進(jìn)行存儲分配需要更多的時間

4、常量存儲常量值通常直接存放在程序代碼內(nèi)部,這樣做是安全的,因為他們永遠(yuǎn)不會被改變。有時在嵌入式系統(tǒng)中,常量會和其他部分隔離開,所以,在這種情況下,可以選擇將其存放在ROM(只讀存儲器)中。

5、非RAM存儲:如果數(shù)據(jù)完全存活于程序之外,那么他可以不受程序的任何限制,在程序沒有運行時也可以存在。其中兩個基本的例子是:流對象和持久化對象,在“流對象”中,對象轉(zhuǎn)化成字節(jié)流,通常被發(fā)送給另一臺機(jī)器,在“持久化對象”中,對象被存放于磁盤上,因此即使程序終止,他們?nèi)钥梢员3肿约旱臓顟B(tài)。這種存儲方式的技巧在于:把對象轉(zhuǎn)化成可以存放在其他媒介上的事物,在需要時,可以恢復(fù)成常規(guī)的、基于RAM的對象。Java提供了對輕量級持久化的支持,而諸如JDBC和hibernate這樣的機(jī)制提供了更加復(fù)雜的對在數(shù)據(jù)庫中存儲和讀取對象信息的支持。

今天就到這了。。。
歡迎大家關(guān)注我的微信公眾號 Java編程社區(qū) 一起交流學(xué)習(xí)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/76604.html

相關(guān)文章

  • 最全知識圖譜綜述#2: 構(gòu)建技術(shù)與典型應(yīng)用

    摘要:知識圖譜開源庫或簡稱是一個用于構(gòu)建語義和關(guān)聯(lián)數(shù)據(jù)應(yīng)用程序的自由和開源的框架。垂直行業(yè)應(yīng)用下面將以金融醫(yī)療電商行業(yè)為例,說明知識圖譜在上述行業(yè)中的典型應(yīng)用。 知識圖譜構(gòu)建的關(guān)鍵技術(shù)1 知識提取2 知識表示3 知識融合4 知識推理知識推理則是在已有的知識庫基礎(chǔ)上進(jìn)一步挖掘隱含的知識,從而豐富、擴(kuò)展知識庫。在推理的過程中,往往需要關(guān)聯(lián)規(guī)則的支持。由于實體、實體屬性以及關(guān)系的多樣性,人們很難窮舉所有...

    duan199226 評論0 收藏0
  • JAVA 中的 CAS

    摘要:我們繼續(xù)看代碼的意思是這個是一段內(nèi)嵌匯編代碼。也就是在語言中使用匯編代碼。就是匯編版的比較并交換。就是保證在多線程情況下,不阻塞線程的填充和消費。微觀上看匯編的是實現(xiàn)操作系統(tǒng)級別的原子操作的基石。 原文地址:https://www.xilidou.com/2018/02/01/java-cas/ CAS 是現(xiàn)代操作系統(tǒng),解決并發(fā)問題的一個重要手段,最近在看 eureka 的源碼的時候。...

    CocoaChina 評論0 收藏0
  • Java基礎(chǔ)知識整理之操作日期

    摘要:基礎(chǔ)知識之日期操作簡介中的時間使用標(biāo)準(zhǔn)類庫的其表示特定的瞬間,精確到毫秒。常用的方法實例化對象簡介是一個以與語言環(huán)境有關(guān)的方式來格式化和解析日期的具體類。它允許進(jìn)行格式化日期文本解析文本日期和規(guī)范化。 Java基礎(chǔ)知識之日期操作 1. Date 簡介 Java中的時間使用標(biāo)準(zhǔn)類庫的java.util.Date,其表示特定的瞬間,精確到毫秒。 是用距離一個固定時間點的毫秒數(shù)(可正可負(fù),l...

    leap_frog 評論0 收藏0
  • 新書《全棧數(shù)據(jù)之門》完整目錄

    摘要:全棧數(shù)據(jù)之門前言自強(qiáng)不息,厚德載物,自由之光,你是我的眼基礎(chǔ),從零開始之門文件操作權(quán)限管理軟件安裝實戰(zhàn)經(jīng)驗與,文本處理文本工具的使用家族的使用綜合案例數(shù)據(jù)工程,必備分析文件探索內(nèi)容探索交差并補其他常用的命令批量操作結(jié)語快捷鍵,之門提高效率光 showImg(https://segmentfault.com/img/bVK0aK?w=350&h=350); 全棧數(shù)據(jù)之門 前言 自強(qiáng)不息,...

    yibinnn 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<