「我又回來了。我之前忘了解釋一些東西。現在我要告訴你跟變量還有記憶體定址 (memory addressing) 有關的事。我們不會說得太深入,但如果你至少記下一點,會很有幫助。」

「我喜歡你上課的態度:如果你了解了—那很好。如果你什麼也不了解—那也沒關係。」

「強摘的果子不甜。這不是明擺著的道理嗎?你的星球上不是這樣嗎?」

「不是耶,我們有不一樣的態度。如果你有意願,那你念書;如果你沒有意願,那你還是念書,即使你不開心。」

「真是太落伍的學習態度了!那會浪費很多精力跟時間,而且效果也很差。」

「我們在浪費上是挺在行的。但別說這些不開心的事了。」

「OK。現在想像一下 Excel。每個人都知道 Excel。Excel 表是由很多格子單元組成的。每個格子單元都有屬於自己的唯一標示 (A1, A2,…B1, B2)。如果你知道一個格子單元的標示,你就隨時可以把值寫進去,或把存在那裏面的值拿出來。電腦記憶體的組織方法非常類似。」

image-ru-01-25

「目前為止我理解。」

「在程式運行期間,程式和程式資料儲存在記憶體中。所有的電腦記憶體都被分成小小的單元 (cell)、或位元組 (byte)。每個單元都有一個相關聯的唯一標示或號碼:0,1,2,3,… (號碼會從 0 開始)。如果你知道一個單元的號碼,你就可以把資料存進去,或從裡面拿資料出來。有些單元會儲存程式的代碼,也就是給處理器的命令集。其他的則是儲存程式使用的資料。我們把每個單元的號碼稱為它的位址 (address)。」

「教授有說過處理器跟命令,但沒有說得很詳細。」

「處理器知道怎麼執行已載入記憶體的命令。幾乎所有的處理器命令都是像『把資料從某個單元拿出來、對資料做點事、把結果傳到其他單元去』這樣的東西。我們把上百個簡單命令結合起來,就能得到複雜並且好用的命令。」

「但為什麼需要這些東西呢?」

「當我們在代碼中宣告一個變量時,會從還沒使用的記憶體裡指定一點記憶體給那個變量。通常只有幾個位元組的大小。宣告變量時,會要求你指出程式要存在裡面的資訊類型:數字、文字或其他資料。為了方便,每個變量會指定一個唯一的名稱。」

「意思是說變量是名稱、型別、一部份記憶體然後也是一個值嗎?」

「變量是你說的所有東西全部組合起來的整體。讓我們看一些例子:」

代碼 解釋
1
String s;
這一行建立一個名稱為 s 的變量。我們把它的型別宣告為 String,因為他要用來儲存文字。
在同一個函式或類別裡,我們不能宣告另一個有同樣名稱的變量。
2
String s2 = "I'm Diego";
這行建立一個叫做 s2 的 String 變量,並立刻指定值 "I'm Diego" 給這個變量。
3
int a;
這裡我們建立了一個叫做 a 的變量。它的資料型別與儲存內容相符。int 資料型別是整數 (integer) 的縮寫。
4
int b = 4;
我們建立了一個叫做 b 的變量。它的資料型別 (int) 是用來儲存整數的。宣告後立即指定值 4 給變量。

「這裡有一些迪亞哥提供的任務。你可以一次做一點點,把它們完成。」

1
任務
Java 語法,  等級 1課堂 3
上鎖
我們鄭重發佈並宣告此等變量…
在 Java 中,變量需要經過宣告,也就是說,我們必須為特定變量型別分配空間。只有在完成宣告後,我們才能指定特定的值。只要短短一行就可以做到這些事了,超棒。在這個任務中,你要宣告幾個變量,並且立即指定值給它們。
1
任務
Java 語法,  等級 1課堂 3
上鎖
螢幕上的變量
剛起步的 Java 程式員會先學習如何宣告(變量)、指定(值給變量)、還有顯示(變量和值)。在這個任務裡,我們三個基本技能都會練習。建立一個 String 變量、指定一個值、然後顯示它。
1
任務
Java 語法,  等級 1課堂 3
上鎖
一個變量不夠多
在學習程式設計時,有些工作一開始看起來像非必要的重複。這只是幻覺:技能就是重複(加上點變化!),不可能用其他方法取得。所以,不要哀哀叫了。振作起來,我們再來宣告變量一次。這次我們會有三個變量,然後我們會指定一些值給它們。
2
任務
Java 語法,  等級 1課堂 3
上鎖
顯示數字的平方
第一次很少是完美的,但一定讓我們餘生難以忘懷。怕你搞不清楚,我們現在是在說程式設計。在這個任務中,我們會試著計算數字的平方、把它顯示在螢幕上、然後也會使用從鍵盤讀入資料的能力(使用者將在程式運行時輸入數字)。