更新時(shí)間:2022-12-16 11:33:02 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1926次
變量的定義賦值:比如int a=1;
a是變量的名字,1是變量的值,也可叫做Java字面量;
這個(gè)定義賦值過程其實(shí)可分為兩個(gè)部分:定義和賦值
int a;
a=1;
定義a變量的儲(chǔ)存位置在哪兒呢?
它在棧內(nèi)存中被分配出了一小塊空間;
而a=1中的1是字面量,字面量的存儲(chǔ)是在方法區(qū)中的常量池中被分配的;
接下來我們談?wù)刯ava對象吧,通常我們都會(huì)用:
A a = new A()來創(chuàng)建一個(gè)對象,我們也把它分為兩步:
A a;
a=new A();
new A()是根據(jù)類模板創(chuàng)建出一個(gè)類的對象,這個(gè)對象是在堆中被創(chuàng)建的,但是它沒有名字,我們只能通過地址去對它進(jìn)行操作,所以我們把它的地址賦值給了a,而a則是一個(gè)引用變量,指向了這個(gè)對象,與C中的指針類似,我們對這個(gè)對象的操作都通過對a引用變量的操作來實(shí)現(xiàn);
而引用變量的內(nèi)存空間分配也在棧內(nèi)存中;
所以棧內(nèi)存的存儲(chǔ)內(nèi)容主要是基本類型的變量和對象的引用變量;
那么我們什么時(shí)候會(huì)用到引用變量呢?
舉個(gè)例子,我們打印一個(gè)字符串
System.out.println(“一個(gè)字符串”);
這個(gè)"一個(gè)字符串"是一個(gè)對象吧,打印結(jié)束后它去了哪里呢?它在打印完成后就被java回收機(jī)制回收了,這種對象我們叫做臨時(shí)對象,我們只是對它進(jìn)行生成和打印,并沒有對它進(jìn)行其他操作,所以根本不需要用到引用變量。
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

初級 202925

初級 203221

初級 202629

初級 203743