第二章:一切都是對象
1.用引用來操作對象
每種編程語言都有自己操作內存中元素的方式;
在Java中,採用引用(reference)來操作對象,在Java語言中,一切都是對象,但是操作表示符只是對象的一個引用。
String s; 這條語句只是創建了一個引用,並沒有創建一個對象
String ss = "hello work"; 這裏才創建了一個String對象
2.必須由你來創建所有對象
如果你創建了一個引用,那麼希望它和一個新的對象關聯;
一般創建使用new關鍵字來實現這個目的
String str = new String ("HelloWork");
2.1存儲在什麼地方
程序在運行的時候,對象是怎麼進行安排放置的?內存如何分配?
~五大存儲區
1.寄存器
最快的存儲區,位置在處理器內部,但是寄存器數量有限,所以寄存器根據需求分配,你不能直接控制,也不能在程序中
感覺到它的任何存在。
2.堆棧
速度僅次於寄存器,位於通用RAM(隨機訪問存儲),可以通過堆棧指針從處理器那裏獲得支持
堆棧指針向下移動,創建新的內存,若向上移動,釋放內存。
java系統必須知道存儲在堆棧內部所有項的
生命週期,以便向上或向下移動堆棧指針。
3.堆
一種通過的內存池,也位於RAM中,用於存放所有的java對象
堆和堆棧的不同是,編譯器不需要存儲的數據在堆中的生命週期,靈活性比堆棧高
但是高靈活性付出的代價是,在堆中分配和清理可能比堆棧需要更多的事件
4.常量存儲
常量值一般存儲在程序代碼內部,這樣做事安全的,因爲它們的值永遠不需要改變
5.非RAM存儲
如果數據存儲在程序之外,那麼它可以不受程序的任何控制,在程序沒有運行時也可以存在。
例如:
流對象
在流對象中, 對象轉化成字節流,通常發送給另外一臺機器
持久化對象
對象用於存放在磁盤
2.2 基本類型
基本類型 | 大小 | 最大值 | 最小值 | 包裝類型 |
---|---|---|---|---|
boolean | Boolean | |||
char | 16 bits | Unicode0 | Unicode2_16-1 | Char |
byte | 8 bits | +127 | -128 | Byte |
short | 16 bits | +2_15-1 | -2_15 | Short |
int | 32 bits | +2_31-1 | -2_31 | Integer |
long | 64 bits | +2_63-1 | -2_63 | Long |
float | 32 bits | IEEE754 | IEEE754 | Float |
double | 64 bits | IEEE754 | IEEE754 | Double |
void | Void |
基本類型 | 大小 | 最小值 | 最大值 | 包裝類型 |
---|---|---|---|---|
2.3 java中的數組