2-1.2 變數
變數宣告
到底,什麼是變數呢?若單從字面上來看,變數應該就是可以變動的數。這種說法,過於簡單與抽象,進一步來看,我們可以將變數視為存放東西的各種箱子,而每種箱子只能存放符合規範的東西,這裡所指的規範,其實就是指資料型態(datatype),如圖2-4所示。當我們將東西放入箱子後,不但可以將該東西取出,也可以換成其他的東西,如此一來,就可以達到更改數值的目的。
Int x; //宣告名稱為x的變數,且該變數的資料型態為int。
圖示如下
[重要] 每個變數在使用之前,必須先宣告並且給予名稱。
當宣告完變數之後,就可以對該變數進行不同的處理。底下的範例,簡單地示範指定數值給變數,以及如何顯示該變數的數值。
Chap2_1_5
結果
程式說明:
1. 這個程式先宣告一個資料型態為int的變數x,表示x只能用來存放整數(int)數值,
不能存放其他的資料型態。
2. 接著,利用指定運算子(=)將數值88指定給x,如圖2-6
[重要] 指定運算子”=”是將數值指定給變數,這和數學運算的”=”號不同。
3. 變數一旦放入內容後,就可以對該變數進行各種運算。本例則是取出該變數的內
容, 並將其顯示在螢幕上。
挑戰題 :
Err2_1_2.java
結果
問題 : 為什麼得不到 x 的值(5)呢?
現在,我們已經會使用變數了。接著,我們將宣告兩個變數,並透個這兩個變數進行一些比較複雜的運算。
Chap2_1_6
結果
程式說明:
就是利用”,”號來連結所要宣告的變數。這樣的方式,可以同時宣告多個變數,只需要在每個變數之間以”,”號隔開。事實上,這二種宣告方式沒有優劣之分,如果按照程式內一行一行的宣告,則比較容易加上註解,缺點就是程式的行數會增加。
2. 然後,分別將數值48指定給x,數值57指定給y。
3. 分別顯示x和y內容。然後,顯示x+y的結果,以及(x+y)/2的結果。
算術運算的方式及優先順序
從程式的結果可以得知,進行算術運算的規則和一般的數學計算很相似,像是括號內先運算,乘除運算優於加減運算等。
[重要] 整數/整數的運算結果也是整數,即會捨棄小數部分。
挑戰題 :
Err2_1_3.java
結果
發生什麼事? 為什麼會產生錯誤?
我們在前面所示範的一些程式,只能處理一些簡單的運算,像是求出63+37的和,或是數值與字串的連結。而且,在這些運算中,數值部分是固定的,也就是63或37。換句話說,如果要進行其它數值的運算,必須直接修改 System.out.println(63+37); 括號中的數值部分。然後,在重新編譯後,才可以得到新的結果。這樣一來,不但費時也費力,也不是好的解決問題方式。所以,若是有一種東西可以讓我們自由地變更數值,而不必費心地修改每個數值,再重新編譯,得到結果,該是多美好的事情啊。當然,這個東西就是我們接著要介紹的變數(variable)。
變數宣告
到底,什麼是變數呢?若單從字面上來看,變數應該就是可以變動的數。這種說法,過於簡單與抽象,進一步來看,我們可以將變數視為存放東西的各種箱子,而每種箱子只能存放符合規範的東西,這裡所指的規範,其實就是指資料型態(datatype),如圖2-4所示。當我們將東西放入箱子後,不但可以將該東西取出,也可以換成其他的東西,如此一來,就可以達到更改數值的目的。
圖2-4
不過,這麼多存有東西的箱子,該如何取得我們所要的東西呢?答案就是為每個箱子命名。藉由給予每個箱子特定的名稱,就能取用到指定的箱子,以及箱子內所存放的東西。上述的整個過程,就是所謂的變數宣告(declaration)。底下是個簡單的變數宣告Int x; //宣告名稱為x的變數,且該變數的資料型態為int。
圖示如下
圖2-5
[重要] 每個變數在使用之前,必須先宣告並且給予名稱。
當宣告完變數之後,就可以對該變數進行不同的處理。底下的範例,簡單地示範指定數值給變數,以及如何顯示該變數的數值。
Chap2_1_5
// 將數值指定給變數並輸出至畫面 class Chap2_1_5 { public static void main(String[] args) { int x; // x為int型態的變數 --------------------- ① x = 88; // 指定88給x --------------------- ② System.out.println(x); // 顯示x的值 ------------------- ③ } } |
結果
88 |
程式說明:
1. 這個程式先宣告一個資料型態為int的變數x,表示x只能用來存放整數(int)數值,
不能存放其他的資料型態。
2. 接著,利用指定運算子(=)將數值88指定給x,如圖2-6
圖2-6
[重要] 指定運算子”=”是將數值指定給變數,這和數學運算的”=”號不同。
3. 變數一旦放入內容後,就可以對該變數進行各種運算。本例則是取出該變數的內
容, 並將其顯示在螢幕上。
挑戰題 :
Err2_1_2.java
// 印出變數 x 的值(5) class Err2_1_2{ public static void main(String[] args){ int x = 5; System.out.println( "x" ); } } |
結果
x |
問題 : 為什麼得不到 x 的值(5)呢?
現在,我們已經會使用變數了。接著,我們將宣告兩個變數,並透個這兩個變數進行一些比較複雜的運算。
Chap2_1_6
// 顯示x與y的和、積以及平均值 class Chap2_1_6 { public static void main(String[] args) { int x; // x為int型態的變數 int y; // y為int型態的變數 x = 48; // 指定48給x y = 57; // 指定57給y 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) + "。"); // 顯示x*y的積 System.out.println("x及y的平均值為" + (x + y) / 2 + "。"); // 顯示平均值 } } |
結果
x的值為48。 y的值為57。 x+y的和為105。 x*y的積為2736。 x及y的平均值為52。 |
程式說明:
1. 程式先宣告兩個int變數x和y。宣告兩個變數的方式,除了上述方式外,也可以如此宣告:
int x,y ; |
就是利用”,”號來連結所要宣告的變數。這樣的方式,可以同時宣告多個變數,只需要在每個變數之間以”,”號隔開。事實上,這二種宣告方式沒有優劣之分,如果按照程式內一行一行的宣告,則比較容易加上註解,缺點就是程式的行數會增加。
2. 然後,分別將數值48指定給x,數值57指定給y。
3. 分別顯示x和y內容。然後,顯示x+y的結果,以及(x+y)/2的結果。
圖2-8
算術運算的方式及優先順序
從程式的結果可以得知,進行算術運算的規則和一般的數學計算很相似,像是括號內先運算,乘除運算優於加減運算等。
* System.out.println("x及y的平均值為" + (x + y) / 2 + "。"); ⇓ (48 + 57) / 2 ⇓ 105 / 2 |
圖2-9
另外,由於整數相除的結果也會是整數,所以(48+57)/2的結果是52,不是52.5。[重要] 整數/整數的運算結果也是整數,即會捨棄小數部分。
挑戰題 :
Err2_1_3.java
// 顯示x與y的和、積以及平均值 class Err2_1_3 { public static void main(String[] args){ int x; // x為int型態的變數 int y; // y為int型態的變數 x = 32.5; y = 42.6; System.out.println("x的值為" + x + "。"); System.out.println("y的值為" + y + "。"); System.out.println("x+y的和為" + (x + y) + "。"); System.out.println("x*y的積為" + (x * y) + "。"); System.out.println("x及y的平均值為" + (x + y) / 2 + "。"); } } |
結果
D:\chap2\Err2_1_3.java:9: possible loss of precision found : double required: int x = 32.5; ^ D:\docs\javabook\chap2\Err2_1_3.java:10: possible loss of precision found : double required: int y = 42.6; ^ 2 errors |
發生什麼事? 為什麼會產生錯誤?
0 意見:
張貼留言