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