1 用引用操作對象
在 Java 語言中我們知道一切都是對象,但操作的標(biāo)識符其實(shí)是一個“引用”,一個引用并不一定需要和一個對象關(guān)聯(lián)。
String str ;
這時 str
就是一個引用而不是一個對象。當(dāng)我們對一個為初始化的引用進(jìn)行操作時便會遇到運(yùn)行時異常。
2 對象的創(chuàng)建
???? 存儲到什么地方
當(dāng)程序運(yùn)行時,對象所存放的位置:
- 寄存器:這是最快的存儲區(qū),它位于處理器內(nèi)部,但是存儲器的數(shù)量是極其有限的,所以存儲器是按需分配,我們不可以進(jìn)行操作。
- 堆棧:僅次于寄存器,位于通用 RAM(隨機(jī)訪問存儲器),通過堆棧指針可以從存儲器中分配/釋放內(nèi)存,java 系統(tǒng)必須知道存儲在堆棧內(nèi)所有項(xiàng)的確切的生命周期,以便于上下移動指針,這一約束限制了程序的靈活性,所以對象一般不會被存儲著堆棧中,堆棧一般存儲對象的引用。
- 堆:一種通用的內(nèi)存池(位于RAM),用于存放 java 對象,在堆中分配有很大的靈活性,因?yàn)椴恍枰来鎯υ诙阎械臄?shù)據(jù)的生命周期,但分配/清理可以消耗的時間要長于堆棧。
- 常量存儲:常量值通常被存儲在程序代碼內(nèi)部,因?yàn)槠溆肋h(yuǎn)都不會被改變。
- 非 RAM 存儲
???? 基本類型
基本類型 | 默認(rèn)值 | 大小 |
---|---|---|
boolean | false | - |
char | null | 16b |
byte | (byte)0 | 8b |
short | (short)0 | 16b |
int | 0 | 32b |
long | 0L | 64b |
float | 0f | 32b |
double | 0.0d | 64b |