2-1.3 變數初始化(Initialize)
當我們宣告一個變數時,就如同建立了一個空箱子。這時候,如果我們嘗試從該箱子中取出東西的話,會發生什麼結果呢?
Chap2_1_7.java
結果
程式說明:
1. 這是一個很容易犯的錯誤。當變數沒有給定任何數值時,變數就是一個空的箱子,當然也就
無法從一個空的箱子中取出任何東西。
[重要] 不要試著存取未給定數值的變數。
在學習撰寫java程式的過程中,能夠讀懂java 的錯誤訊息,是一件非常重要的事情。在編譯程式的過程中,java編譯器會針對任何錯誤,顯示對應的錯誤訊息。因此,我們可以從所顯示的錯誤訊息中,知道犯了那些錯誤,予以適當的修正,讓程式可以順利地執行,進而提升撰寫程式的能力。
[重要] 嘗試學習並瞭解程式所顯示的任何錯誤訊息。
宣告時的初始化
如果,在宣告變數這個箱子時,就已經知道要放入的東西。那麼,最好的方式就是直接把東西一併放入。這樣的話,可以避免之後發生存取不到東西的問題。
[重要] 盡量在宣告變數時,一併指定變數的值。
Chap2_1_8.java
結果
程式說明 :
Chap2_1_8 中的灰底部份,直接在宣告變數 x和 y時,同時完成變數的初始化動作,也就是分別將48 和57指定給x和 y。
初始化與指定
[補充] 指定: 在宣告變數後,然後在不同的時間點,指定變數的值。
在宣告及初始化變數時,亦可用
將多行程式碼宣告及初始化,合併為單行宣告。
練習題 2-1
三個 int 的變數,分別為x,y及z,計算其三數相加之總合、相乘之積及平均值後,按照以下格式輸出。
當我們宣告一個變數時,就如同建立了一個空箱子。這時候,如果我們嘗試從該箱子中取出東西的話,會發生什麼結果呢?
Chap2_1_7.java
// 顯示x與y的和,以及平均值(不正確,觀察錯誤訊息。) class Chap2_1_7 { public static void main(String[] args) { int x; // x為int型態的變數 int y; // y為int型態的變數 System.out.println("x的值為" + x + "。"); // 顯示x的值 System.out.println("y的值為" + y + "。"); // 顯示y的值 System.out.println("x+y的和為" + (x + y) + "。"); // 顯示x+y的和 System.out.println("x及y的平均值為" + (x + y) / 2 + "。"); // 顯示平均值 } } |
結果
D:\chap2\ Chap2_1_7.java:8: variable x might not have been initialized System.out.println("x的值為" + x + "。"); // 顯示x的值 ^ D:\chap2\ Chap2_1_7.java:9: variable y might not have been initialized System.out.println("y的值為" + y + "。"); // 顯示y的值 ^ 2 errors |
程式說明:
1. 這是一個很容易犯的錯誤。當變數沒有給定任何數值時,變數就是一個空的箱子,當然也就
無法從一個空的箱子中取出任何東西。
2. java: 8: variable x might not have been initialized 這個訊息的意思是,”變數x沒有被初始化”,即變數x沒有被給予任何數值。當發生這種編譯錯誤時,編譯程式無法順利完成編譯,也就無法建立對應的類別檔(.class),程式就不能執行。
[重要] 不要試著存取未給定數值的變數。
在學習撰寫java程式的過程中,能夠讀懂java 的錯誤訊息,是一件非常重要的事情。在編譯程式的過程中,java編譯器會針對任何錯誤,顯示對應的錯誤訊息。因此,我們可以從所顯示的錯誤訊息中,知道犯了那些錯誤,予以適當的修正,讓程式可以順利地執行,進而提升撰寫程式的能力。
[重要] 嘗試學習並瞭解程式所顯示的任何錯誤訊息。
宣告時的初始化
如果,在宣告變數這個箱子時,就已經知道要放入的東西。那麼,最好的方式就是直接把東西一併放入。這樣的話,可以避免之後發生存取不到東西的問題。
[重要] 盡量在宣告變數時,一併指定變數的值。
Chap2_1_8.java
// 顯示x與y的和以及平均值 (將變數初始化) class Chap2_1_8 { public static void main(String[] args) { int x = 48; // x為int型態的變數 int y = 57; // y為int型態的變數 System.out.println("x的值為" + x + "。"); // 顯示x的值 System.out.println("y的值為" + y + "。"); // 顯示y的值 System.out.println("x+y的和為" + (x + y) + "。"); // 顯示x+y的和 System.out.println("x及y的平均值為" + (x + y) / 2 + "。"); // 顯示平均值 } } |
結果
x的值為48。 y的值為57。 x+y的和為105。 x及y的平均值為52。 |
程式說明 :
Chap2_1_8 中的灰底部份,直接在宣告變數 x和 y時,同時完成變數的初始化動作,也就是分別將48 和57指定給x和 y。
初始化與指定
雖然,就給定變數值來看,本程式與Chap2_1_6所做的指定結果相同。但是,在將值放入箱子的時間卻是不同的,如圖2-10所示
* |
圖2-10
[補充] 初始化: 在宣告變數的同時,一併指定變數的值。[補充] 指定: 在宣告變數後,然後在不同的時間點,指定變數的值。
在宣告及初始化變數時,亦可用
int x = 48 , y=57; |
將多行程式碼宣告及初始化,合併為單行宣告。
練習題 2-1
三個 int 的變數,分別為x,y及z,計算其三數相加之總合、相乘之積及平均值後,按照以下格式輸出。
x,y,z 三數之和為 12。 x,y,z 三數之積為 60。 x,y,z 三數之平均值為 4。 |
0 意見:
張貼留言