「我又回來了。我之前忘了解釋一些東西。現在我要告訴你跟變量還有記憶體定址 (memory addressing) 有關的事。我們不會說得太深入,但如果你至少記下一點,會很有幫助。」
「我喜歡你上課的態度:如果你了解了—那很好。如果你什麼也不了解—那也沒關係。」
「強摘的果子不甜。這不是明擺著的道理嗎?你的星球上不是這樣嗎?」
「不是耶,我們有不一樣的態度。如果你有意願,那你念書;如果你沒有意願,那你還是念書,即使你不開心。」
「真是太落伍的學習態度了!那會浪費很多精力跟時間,而且效果也很差。」
「我們在浪費上是挺在行的。但別說這些不開心的事了。」
「OK。現在想像一下 Excel。每個人都知道 Excel。Excel 表是由很多格子單元組成的。每個格子單元都有屬於自己的唯一標示 (A1, A2,…B1, B2)。如果你知道一個格子單元的標示,你就隨時可以把值寫進去,或把存在那裏面的值拿出來。電腦記憶體的組織方法非常類似。」
「目前為止我理解。」
「在程式運行期間,程式和程式資料儲存在記憶體中。所有的電腦記憶體都被分成小小的單元 (cell)、或位元組 (byte)。每個單元都有一個相關聯的唯一標示或號碼:0,1,2,3,… (號碼會從 0 開始)。如果你知道一個單元的號碼,你就可以把資料存進去,或從裡面拿資料出來。有些單元會儲存程式的代碼,也就是給處理器的命令集。其他的則是儲存程式使用的資料。我們把每個單元的號碼稱為它的位址 (address)。」
「教授有說過處理器跟命令,但沒有說得很詳細。」
「處理器知道怎麼執行已載入記憶體的命令。幾乎所有的處理器命令都是像『把資料從某個單元拿出來、對資料做點事、把結果傳到其他單元去』這樣的東西。我們把上百個簡單命令結合起來,就能得到複雜並且好用的命令。」
「但為什麼需要這些東西呢?」
「當我們在代碼中宣告一個變量時,會從還沒使用的記憶體裡指定一點記憶體給那個變量。通常只有幾個位元組的大小。宣告變量時,會要求你指出程式要存在裡面的資訊類型:數字、文字或其他資料。為了方便,每個變量會指定一個唯一的名稱。」
「意思是說變量是名稱、型別、一部份記憶體然後也是一個值嗎?」
「變量是你說的所有東西全部組合起來的整體。讓我們看一些例子:」
代碼 | 解釋 | |
---|---|---|
1 |
|
這一行建立一個名稱為 s 的變量。我們把它的型別宣告為 String ,因為他要用來儲存文字。在同一個函式或類別裡,我們不能宣告另一個有同樣名稱的變量。 |
2 |
|
這行建立一個叫做 s2 的 String 變量,並立刻指定值 "I'm Diego" 給這個變量。 |
3 |
|
這裡我們建立了一個叫做 a 的變量。它的資料型別與儲存內容相符。int 資料型別是整數 (integer) 的縮寫。 |
4 |
|
我們建立了一個叫做 b 的變量。它的資料型別 (int ) 是用來儲存整數的。宣告後立即指定值 4 給變量。 |
「這裡有一些迪亞哥提供的任務。你可以一次做一點點,把它們完成。」
GO TO FULL VERSION