溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

《Java架構(gòu)筑基》從Java基礎(chǔ)講起——基本數(shù)據(jù)類(lèi)型存儲(chǔ)位置

發(fā)布時(shí)間:2020-07-03 13:38:06 來(lái)源:網(wǎng)絡(luò) 閱讀:314 作者:未來(lái)可期_ 欄目:編程語(yǔ)言

一.先看一個(gè)題目

Java中的基本數(shù)據(jù)類(lèi)型一定存儲(chǔ)在棧中嗎?

二.答案說(shuō)明

首先說(shuō)明,"java中的基本數(shù)據(jù)類(lèi)型一定存儲(chǔ)在棧中的嗎?”這句話肯定是錯(cuò)誤的。

基本數(shù)據(jù)類(lèi)型是放在棧中還是放在堆中,這取決于基本類(lèi)型在何處聲明,下面對(duì)數(shù)據(jù)類(lèi)型在內(nèi)存中的存儲(chǔ)問(wèn)題來(lái)解釋一下。

三.局部變量存儲(chǔ)位置

在方法中聲明的變量,即該變量是局部變量

  • 每當(dāng)程序調(diào)用方法時(shí),系統(tǒng)都會(huì)為該方法建立一個(gè)方法棧,其所在方法中聲明的變量就放在方法棧中,當(dāng)方法結(jié)束系統(tǒng)會(huì)釋放方法棧,其對(duì)應(yīng)在該方法中聲明的變量隨著棧的銷(xiāo)毀而結(jié)束,這就局部變量只能在方法中有效的原因。
  • 在方法中聲明的變量可以是基本類(lèi)型的變量,也可以是引用類(lèi)型的變量。
  • 當(dāng)聲明是基本類(lèi)型的變量的時(shí),其變量名及值(變量名及值是兩個(gè)概念)是放在JAVA虛擬機(jī)棧中
  • 當(dāng)聲明的是引用變量時(shí),所聲明的變量(該變量實(shí)際上是在方法中存儲(chǔ)的是內(nèi)存地址值)是放在JAVA虛擬機(jī)的棧中,該變量所指向的對(duì)象是放在堆類(lèi)存中的

四.成員變量存儲(chǔ)位置

在類(lèi)中聲明的變量是成員變量,也叫全局變量

  • 放在堆中的(因?yàn)槿肿兞坎粫?huì)隨著某個(gè)方法執(zhí)行結(jié)束而銷(xiāo)毀)。
  • 同樣在類(lèi)中聲明的變量即可是基本類(lèi)型的變量,也可是引用類(lèi)型的變量。
  • 當(dāng)聲明的是基本類(lèi)型的變量其變量名及其值放在堆內(nèi)存中的
  • 引用類(lèi)型時(shí),其聲明的變量仍然會(huì)存儲(chǔ)一個(gè)內(nèi)存地址值,該內(nèi)存地址值指向所引用的對(duì)象。引用變量名和對(duì)應(yīng)的對(duì)象仍然存儲(chǔ)在相應(yīng)的堆中

五.靜態(tài)變量存儲(chǔ)位置

靜態(tài)變量其實(shí)就是常量

  • 注意是:存儲(chǔ)在JVM的方法區(qū)中
  • static變量在類(lèi)加載時(shí)被初始化,存儲(chǔ)在JVM的方法區(qū)中,整個(gè)內(nèi)存中只有一個(gè)static變量的拷貝,可以使用類(lèi)名直接訪問(wèn),也可以通過(guò)類(lèi)的實(shí)例化對(duì)象訪問(wèn),一般不推薦通過(guò)實(shí)例化對(duì)象訪問(wèn),通俗的講static變量屬于類(lèi),不屬于對(duì)象,任何實(shí)例化的對(duì)象訪問(wèn)的都是同一個(gè)static變量,任何地放都可以通過(guò)類(lèi)名來(lái)訪問(wèn)static變量。

六.舉例說(shuō)明

此外,為了反駁觀點(diǎn)" Java的基本數(shù)據(jù)類(lèi)型都是存儲(chǔ)在棧的 ",我們也可以隨便舉出一個(gè)反例,例如:

int[] array=new int[]{1,2};

由于new了一個(gè)對(duì)象,所以new int[]{1,2}這個(gè)對(duì)象時(shí)存儲(chǔ)在堆中的,也就是說(shuō)1,2這兩個(gè)基本數(shù)據(jù)類(lèi)型是存儲(chǔ)在堆中,這也就很有效的反駁了基本數(shù)據(jù)類(lèi)型一定是存儲(chǔ)在棧中~~

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI