新聞中心
Java中的對(duì)象與C++中的對(duì)象有什么區(qū)別?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
創(chuàng)新互聯(lián)總部坐落于成都市區(qū),致力網(wǎng)站建設(shè)服務(wù)有網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷策劃、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站維護(hù)、公眾號(hào)搭建、微信平臺(tái)小程序開發(fā)、軟件開發(fā)等為企業(yè)提供一整套的信息化建設(shè)解決方案。創(chuàng)造真正意義上的網(wǎng)站建設(shè),為互聯(lián)網(wǎng)品牌在互動(dòng)行銷領(lǐng)域創(chuàng)造價(jià)值而不懈努力!
Java中對(duì)象與C++中對(duì)象的放置安排的對(duì)比
概要:
Java中,所有的對(duì)象都存放在堆(Heap,一種通用的內(nèi)存池)中;而對(duì)象的引用是存放在堆棧(Stack)中的。
我們可以通過String直接聲明的字符串與new String聲明出來的字符串使用equals()和"=="進(jìn)行的比較,從而理解對(duì)象和引用的關(guān)系及它們的存儲(chǔ)位置。
堆棧是一種快速有效的分配存儲(chǔ)方法,僅次于寄存器。創(chuàng)建程序時(shí),Java系統(tǒng)必須知道存儲(chǔ)在堆棧內(nèi)所有項(xiàng)的確切生命周期,以便上下移動(dòng)堆棧指針。
堆不同于堆棧的好處是:編譯器不需要知道存儲(chǔ)的數(shù)據(jù)在堆里存活多長(zhǎng)時(shí)間。所以,堆比堆棧更加靈活。
Java中的堆棧并不能簡(jiǎn)單理解為數(shù)據(jù)結(jié)構(gòu)中的棧,雖然它們的英文都是Stack。Java中的堆棧是位于通用RAM(隨機(jī)訪問存儲(chǔ)器)中,但通過堆棧指針可以從處理器那里獲得直接支持。堆棧指針若向下移動(dòng),則分配新的內(nèi)存;若向上移動(dòng),則釋放那些內(nèi)存。
具體的Java的內(nèi)存分配請(qǐng)?jiān)斠姟禩hinking in Java》P22頁(yè)。
C++中:只要使用了new和malloc關(guān)鍵字聲明的對(duì)象,都是存放在堆中的,而malloc關(guān)鍵字也是對(duì)堆內(nèi)存進(jìn)行操作的:
A a(1);//棧中分配 A b = A(1);//棧中分配 A *c = new A(1);//堆中分配內(nèi)存空間,將在堆中所創(chuàng)建的對(duì)象存儲(chǔ)地址賦值給c指針 A *d = (A*)malloc(sizeof(A));//堆中分配內(nèi)存空間 delete c;
看完上述內(nèi)容,你們掌握J(rèn)ava中的對(duì)象與C++中的對(duì)象有什么區(qū)別的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
文章題目:Java中的對(duì)象與C++中的對(duì)象有什么區(qū)別
轉(zhuǎn)載來于:http://www.ef60e0e.cn/article/jhhhde.html