1. 記憶是如何組織的
每台計算機都有內存。它是什麼?它有什麼特性?而且,最重要的是,它對我們有什麼好處?
每個程序(包括用 Java 編寫的程序)在執行之前都被加載到主內存中。主內存包含程序代碼(由處理器執行)以及程序數據(即程序本身放入內存的數據)。
什麼是記憶,它是什麼樣的?
一個 Exсel 電子表格由單元格組成。每個單元格都有自己的唯一標識符( A1
, A2
, ... B1
, B2
)。如果您知道單元格的標識符,那麼您總是可以向其中寫入一些值或獲取存儲在那裡的任何值。計算機內存的組織方式非常相似。

程序和程序數據在程序運行時存儲在內存中。所有計算機內存都由稱為字節的小單元組成。每個單元格都有一個與之相關聯的唯一標識符或編號:0
, 1
, 2
, 3
, ...; (編號從零開始)。如果我們知道一個單元格的編號,我們就可以在其中保存數據。或者從中獲取數據。一些單元存儲程序的代碼,即處理器的一組命令。其他存儲程序使用的數據。單元格的編號也稱為單元格地址。
處理器知道如何執行已加載到內存中的命令。幾乎所有的處理器命令都類似於從一些單元格中獲取數據,對它們進行處理,然後將結果發送到其他單元格。
我們組合了數百個簡單的命令來獲得複雜而有用的命令。
在代碼中聲明變量時,會為其分配一塊尚未使用的內存。這通常是幾個字節。聲明變量需要您指明程序將存儲在其中的信息類型:數字、文本或其他數據。畢竟,如果您不知道要存儲的信息類型,那麼就不清楚需要為變量分配多大的內存塊。
在計算機時代的初期,程序直接使用內存地址,但隨後,為了程序員的方便,單元格開始被命名。唯一的變量名首先是為了方便程序員,因為程序可以很好地處理普通內存地址。
2.內存中的變量
Java 總共有 4 種用於存儲整數的數據類型。這些是byte
、short
和int
。long
類型 | 字節大小 | 類型名稱的來源 |
---|---|---|
byte |
1 |
byte是 bite 的故意反拼,以避免與 bit 混淆 |
short |
2 |
短整數的縮寫 |
int |
4 |
整數的縮寫 |
long |
8 |
長整數的縮寫 |
此外,Java 有兩種實數類型:float 和 double:
類型 | 字節大小 | 類型名稱的來源 |
---|---|---|
float |
4 |
浮點數的縮寫 |
double |
8 |
Double Float的縮寫 |
每次程序執行到創建變量的命令時,都會為其分配一小塊內存(大小取決於變量的類型)。
Java 程序不允許直接訪問內存。所有與內存有關的工作都只能通過 Java 虛擬機進行。
3.String
內存中的類型
該String
類型可以存儲大量數據,這意味著它不僅僅是一種數據類型,而是一個成熟的類。
該String
對像被放置在一個已分配的內存塊中,該內存塊存儲另一個存儲文本的內存塊的地址。
變量int
a
佔用4
字節並存儲值1
。
變量int
b
佔用4
字節並存儲值10,555
。我們使用逗號作為千位分隔符。我們使用句點作為小數點分隔符。
變量double
d
佔用8
字節並存儲值13.001
。
該String
str
變量佔用4
字節並存儲值G13
,該值是包含文本的內存塊的第一個單元格的地址。
的文本String
object
存儲在單獨的內存塊中。它的第一個單元格的地址存儲在str
變量中。
4.編程中為什麼編號從零開始
人們常常想知道為什麼程序員幾乎總是從零開始計數。好吧,事實是有很多情況從零開始計數更方便(當然也有從 開始計數更方便的情況1
)。
最簡單的例子是內存尋址。如果你的變量已經分配了4
內存字節並且你知道這X
是第一個字節的地址,那麼每個字節的地址是什麼?,,, . _ _ 就這麼簡單,我們有一組字節可以通過索引, , ,訪問。X+0
X+1
X+2
X+3
0
1
2
3
當我們考慮數據塊中的相對地址時,從零開始索引是有意義的。這是從零開始計數的主要原因。
GO TO FULL VERSION