2-1.1 顯示運算結果
現在讓我們撰寫程式, 進行簡單的加法運算, 並顯示運算後的結果。
Chap2_1_1.java
執行結果
程式說明:
從輸出結果來看,可以歸納出以下要點:
1.因為63+37位於小括號內,所以會先進行兩個整數的加法運算,即63+37=100。
2. 因此,System.out.println(63 + 37); 就等同於System.out.println(100); 。所以,程式會
在螢 幕上顯示整數值100後,再輸出換行字元。
[補充] System.out.print(); 及 System.out.println(); 敘述中的print()和println()方法,這是方法
多載(method overloading)的應用,在第七章會更進一步地探討。
整數與字串
上例中,數值63和37就是整數常值(integer literal)。請注意,這和字串常值(String literal)"63"不同。不過,就此程式的執行結果來看,若只顯示數值100的話,無法瞭解該程式所要表達的意義。所以,我們可以搭配字串常值的使用,來表達更清楚的意思。
連結字串與數值
因此,為了清楚表達整數值100是數值63加上數值37的結果,我們修改上述程式,加入適當的字串顯示後,可以清楚表達所進行的運算。
Chap2_1_2.java
執行結果
程式說明:
由執行結果來看,在將結果輸出並顯示之前,會先完成多項動作,其處理過程如下:
1.如同我們在做數學運算一般,括號內的運算會優先執行,也就是先進行(63+37)的加法運 算。
[重要] 括號內的運算會優先執行。
2. 因為,使用+號連接字串與數值時,會先將數值轉換成字串,接著再進行字串的連結。
所以,數值100就會轉換成字串"100"。
[重要] 當以”+”號連接字串與數值時,不論是字串+數值或是數值+字串,都會先將數值
轉換成字串後,再進行自串連結。
3. 接著,就會連結字串“63+37=”和“100”,成為 “63+37=100”,然後將結果輸出並顯示。
圖2-1
想看看,如果刪除程式Chap2_1_2中圍住運算式63+37的括號,結果會有什麼不同?底下是修改後的程式,試著執行看看,並觀看結果有何不同。
Chap2_1_3.java
執行結果
程式說明:
因為運算式63+57沒有用括號圍住,所以程式會由左至右進行運算,得到63+57=6357這個結果,而不是我們所預期的63+57=100。以下,我們利用圖示來表達整個運算過程。
圖2-2
接著,我們再看看另一個不使用括號的範例。雖然,該範例會得到與我們預期相同的結果。但是,除非你非常清楚整個運算流程。否則,不建議以此方式來撰寫程式。
Chap2_1_4.java
執行結果
程式說明
雖然,我們沒有使用括號來圍住運算式63+37。但是,仍然可以得到正確的結果。這是因為運算順序的關係。下圖,詳細解說整個運算流程。
圖2-3
請注意,盡量多使用各種括號來決定運算的優先順序。畢竟,不是所有的運算都是由左到右進行運算。而且,省略各種括號,只會讓程式變得更加難懂,甚至得到非預期的結果。所以,要精簡程式碼之前,請先確定你已完全瞭解運算流程,以免因小失大。
挑戰題
執行結果
請找出以上個程式的錯誤,並加以修正。
現在讓我們撰寫程式, 進行簡單的加法運算, 並顯示運算後的結果。
Chap2_1_1.java
// 計算並顯示整數63與37的和 class Chap2_1_1 { public static void main(String[] args) { System.out.println(63 + 37); } } |
執行結果
100 |
程式說明:
從輸出結果來看,可以歸納出以下要點:
1.因為63+37位於小括號內,所以會先進行兩個整數的加法運算,即63+37=100。
2. 因此,System.out.println(63 + 37); 就等同於System.out.println(100); 。所以,程式會
在螢 幕上顯示整數值100後,再輸出換行字元。
[補充] System.out.print(); 及 System.out.println(); 敘述中的print()和println()方法,這是方法
多載(method overloading)的應用,在第七章會更進一步地探討。
整數與字串
上例中,數值63和37就是整數常值(integer literal)。請注意,這和字串常值(String literal)"63"不同。不過,就此程式的執行結果來看,若只顯示數值100的話,無法瞭解該程式所要表達的意義。所以,我們可以搭配字串常值的使用,來表達更清楚的意思。
連結字串與數值
因此,為了清楚表達整數值100是數值63加上數值37的結果,我們修改上述程式,加入適當的字串顯示後,可以清楚表達所進行的運算。
Chap2_1_2.java
// 計算並顯示整數63與37的和,利用加入適當的字串常數,讓表達的意思更加清楚。 class Chap2_1_2 { public static void main(String[] args) { System.out.println("63 + 37 =" + (63 + 37)); } } |
執行結果
63 + 37 =100 |
程式說明:
由執行結果來看,在將結果輸出並顯示之前,會先完成多項動作,其處理過程如下:
1.如同我們在做數學運算一般,括號內的運算會優先執行,也就是先進行(63+37)的加法運 算。
[重要] 括號內的運算會優先執行。
2. 因為,使用+號連接字串與數值時,會先將數值轉換成字串,接著再進行字串的連結。
所以,數值100就會轉換成字串"100"。
[重要] 當以”+”號連接字串與數值時,不論是字串+數值或是數值+字串,都會先將數值
轉換成字串後,再進行自串連結。
3. 接著,就會連結字串“63+37=”和“100”,成為 “63+37=100”,然後將結果輸出並顯示。
System.out.println( “ 63 + 37 = ” + ( 63 + 37 ) ); ⤵ 進行括號()內的運算 ⇩ 100 ⇢由左至右運算 ⇢ System.out.println( “ 63 + 37 = ” + 100 ); ⤵ 將 int 100 轉換成 String “100” “100” ⇩ 連結 System.out.println( “ 63 + 37 = 100 ” ); |
圖2-1
想看看,如果刪除程式Chap2_1_2中圍住運算式63+37的括號,結果會有什麼不同?底下是修改後的程式,試著執行看看,並觀看結果有何不同。
Chap2_1_3.java
// 計算並顯示整數63與37的和,因為少了括號而得到非預期的結果。 class Chap2_1_3 { public static void main(String[] args) { System.out.println("63 + 37 = " + 63 + 37); } } |
執行結果
63 + 37 = 6337 |
程式說明:
因為運算式63+57沒有用括號圍住,所以程式會由左至右進行運算,得到63+57=6357這個結果,而不是我們所預期的63+57=100。以下,我們利用圖示來表達整個運算過程。
System.out.println( " 63 + 37 = " + 63 + 37 ); ⤵ int 63 轉換成 String “63” “63” ⇩ 進行字串連結 System.out.println( " 63 + 37 = 63” + 37 ); ⤵ int 37 轉換成 String “37” “37” ⇩ 進行字串連結 System.out.println( " 63 + 37 = 6337 “ ); |
圖2-2
接著,我們再看看另一個不使用括號的範例。雖然,該範例會得到與我們預期相同的結果。但是,除非你非常清楚整個運算流程。否則,不建議以此方式來撰寫程式。
Chap2_1_4.java
// 計算並顯示整數63與37的和,雖然沒有括號,卻得到預期的結果。 class Chap2_1_4 { public static void main(String[] args) { System.out.println(63 + 37 + "是63加上37的和。"); } } |
執行結果
100是63加上37的和。 |
程式說明
雖然,我們沒有使用括號來圍住運算式63+37。但是,仍然可以得到正確的結果。這是因為運算順序的關係。下圖,詳細解說整個運算流程。
⇢ 由左至右讀取 ⇢⇢⇢ System.out.println( 63 + 37 + " 是63加上37的和。" ); ⤵ 進行 63 + 37 的運算 100 ⇢ 讀取到 + 及 “字串” System.out.println( 100 + " 是63加上37的和。"); ⤵ int 100 轉換成 String “100” “100” ⇩ 連結 System.out.println( “ 100 是63加上37的和。" ); |
圖2-3
請注意,盡量多使用各種括號來決定運算的優先順序。畢竟,不是所有的運算都是由左到右進行運算。而且,省略各種括號,只會讓程式變得更加難懂,甚至得到非預期的結果。所以,要精簡程式碼之前,請先確定你已完全瞭解運算流程,以免因小失大。
挑戰題
//求出運算式 63 – 27的結果,並且在畫面上顯示 63-37 = 26 class Err2_1_1 { public static void main(String[] args) { System.out.println("63-37 = " + 63 - 37); } } |
執行結果
D:\chap2\Err2_1_1.java:6: operator - cannot be applied to java.lang.String,int System.out.println("63-37 = " + 63 - 37); ^ 1 error |
請找出以上個程式的錯誤,並加以修正。
0 意見:
張貼留言