1. 記憶是如何組織的

每台計算機都有內存。它是什麼?它有什麼特性?而且,最重要的是,它對我們有什麼好處?

每個程序(包括用 Java 編寫的程序)在執行之前都被加載到主內存中。主內存包含程序代碼(由處理器執行)以及程序數據(即程序本身放入內存的數據)。

什麼是記憶,它是什麼樣的?

一個 Exсel 電子表格由單元格組成。每個單元格都有自己的唯一標識符( A1, A2, ... B1, B2)。如果您知道單元格的標識符,那麼您總是可以向其中寫入一些值或獲取存儲在那裡的任何值。計算機內存的組織方式非常相似。

程序和程序數據在程序運行時存儲在內存中。所有計算機內存都由稱為字節的小單元組成。每個單元格都有一個與之相關聯的唯一標識符或編號:0, 1, 2, 3, ...; (編號從零開始)。如果我們知道一個單元格的編號,我們就可以在其中保存數據。或者從中獲取數據。一些單元存儲程序的代碼,即處理器的一組命令。其他存儲程序使用的數據。單元格的編號也稱為單元格地址

處理器知道如何執行已加載到內存中的命令。幾乎所有的處理器命令都類似於從一些單元格中獲取數據對它們進行處理,然後將結果發送到其他單元格

我們組合了數百個簡單的命令來獲得複雜而有用的命令。

在代碼中聲明變量時,會為其分配一塊尚未使用的內存。這通常是幾個字節。聲明變量需要您指明程序將存儲在其中的信息類型:數字、文本或其他數據。畢竟,如果您不知道要存儲的信息類型,那麼就不清楚需要為變量分配多大的內存塊。

在計算機時代的初期,程序直接使用內存地址,但隨後,為了程序員的方便,單元格開始被命名。唯一變量名首先是為了方便程序員,因為程序可以很好地處理普通內存地址。


2.內存中的變量

Java 總共有 4 種用於存儲整數的數據類型。這些是byteshortintlong

類型 字節大小 類型名稱的來源
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+0X+1X+2X+30123

當我們考慮數據塊中的相對地址時,從零開始索引是有意義的。這是從零開始計數的主要原因。