《On Java 8》第3章 萬物皆對象

數據存儲

1、寄存器:最快的存儲區域,位於 CPU 內部。寄存器的數量十分有限,所以寄存器根據需求進行分配。我們對其沒有直接的控制權,也無法在自己的程序裏找到寄存器存在的蹤跡(C/C++ 允許開發者向編譯器建議寄存器的分配)。
2、棧內存:存在於常規內存RAM(隨機訪問存儲器,Random Access Memory)區域中,可通過棧指針獲得處理器的直接支持。棧指針下移分配內存,上移釋放內存。這是一種僅次於寄存器的非常快速有效的分配存儲方式。創建程序時,Java 系統必須知道棧內保存的所有項的生命週期。這種約束限制了程序的靈活性。因此,雖然在棧內存上存在一些 Java 數據(如對象引用),但 Java 對象本身的數據確實保存在堆內存的。
3、堆內存:這是一種通用的內存池,也在 RAM 區域,所有 Java 對象都存在於其中。與棧內存不同,編譯器不需要知道對象必須在堆內存上停留多長時間。因此,在堆內存保存數據更具靈活性。這種靈活性是有代價的,分配和清理內存要比棧內存需要更多的時間。
4、常量存儲:常量值通常直接放在程序代碼中,因爲它們永遠不會改變。如需嚴格保護,可考慮將他們置於只讀存儲器(ROM,Read Only Memory)中。
5、非 RAM 存儲:數據完全存在於程序之外,在程序未運行以及脫離程序控制後依然存在。兩個主要的例子:
(1)序列化對象:對象被轉換爲字節流,通常被髮送到另一臺機器;
(2)持久化對象:對象被放置在磁盤上,即使程序終止,數據依然存在。

高精度數值

BigInteger:支持任意精度的整數,可用於精確表示任意大小的整數值,同時在運算過程中不會丟失精度。
BigDecimal:支持任意精度的定點數字,例如,可用它進行精確的貨幣計算。

方法使用

方法名和參數列表統稱爲方法簽名。簽名作爲方法的唯一標識。

程序編寫

每個 Java 源文件中允許有多個類。源文件的名稱必須要和其中一個類名相同,否則編譯器將會報錯。

public static void main(String[] args){}

參數 args 並沒有在當前的程序中使用到,但是 Java 編譯器強制要求必須要有,因爲它們被用於接收從命令行輸入的參數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章