更新時(shí)間:2022-12-16 11:33:02 來源:動力節(jié)點(diǎn) 瀏覽1471次
變量的定義賦值:比如int a=1;
a是變量的名字,1是變量的值,也可叫做Java字面量;
這個定義賦值過程其實(shí)可分為兩個部分:定義和賦值
int a;
a=1;
定義a變量的儲存位置在哪兒呢?
它在棧內(nèi)存中被分配出了一小塊空間;
而a=1中的1是字面量,字面量的存儲是在方法區(qū)中的常量池中被分配的;
接下來我們談?wù)刯ava對象吧,通常我們都會用:
A a = new A()來創(chuàng)建一個對象,我們也把它分為兩步:
A a;
a=new A();
new A()是根據(jù)類模板創(chuàng)建出一個類的對象,這個對象是在堆中被創(chuàng)建的,但是它沒有名字,我們只能通過地址去對它進(jìn)行操作,所以我們把它的地址賦值給了a,而a則是一個引用變量,指向了這個對象,與C中的指針類似,我們對這個對象的操作都通過對a引用變量的操作來實(shí)現(xiàn);
而引用變量的內(nèi)存空間分配也在棧內(nèi)存中;
所以棧內(nèi)存的存儲內(nèi)容主要是基本類型的變量和對象的引用變量;
那么我們什么時(shí)候會用到引用變量呢?
舉個例子,我們打印一個字符串
System.out.println(“一個字符串”);
這個"一個字符串"是一個對象吧,打印結(jié)束后它去了哪里呢?它在打印完成后就被java回收機(jī)制回收了,這種對象我們叫做臨時(shí)對象,我們只是對它進(jìn)行生成和打印,并沒有對它進(jìn)行其他操作,所以根本不需要用到引用變量。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743