12
12
13
13
先來解釋一下第 2 章中您所完成的「第一個 Java 程式」,如果您學過 C 語言,對於 3.1.2「給 C 使用者的第一個 Java 程式」可能會覺得比較親切,因為介紹了類似 C 語言中 printf() 函式的功能,另外別忘了在寫程式時加入一些註解文字,這在閱讀程式碼的時候會很有幫助。
14
14
15
- ## 3.1.1 解釋第一個 Java 程式 #
15
+ ## 3.1.1 解釋第一個 Java 程式
16
16
17
17
要對新手解釋第一個 Java 程式事實上並不簡單,因為一個最簡單的 Java 程式就會涉及檔案管理、類別 (Class)、主程式、命令列引數(Command line argument)等觀念,我很想對您說,反正一個基本的 Java 程式就這麼寫就對了,因為要一下子接受這麼多觀念並不容易。總之,如果現階段您無法瞭解,就請當它是 Java 語言的文法規範。
18
18
@@ -194,7 +194,7 @@ public class ThirdJavaForC {
194
194
195
195
從互動中學習,是我最喜愛的學習方式,我建議學習 Java 的第一步,要先能看到您的程式執行結果,要可以對程式輸入一些資料,作一些傻瓜式的互動。
196
196
197
- ## 3.2.1 使用 Scanner 取得輸入 ##
197
+ ## 3.2.1 使用 Scanner 取得輸入
198
198
199
199
在文字模式下要輸入資料至程式中時,您可以使用標準輸入串流物件 System.in,然而實際上很少直接使用它,因為 System.in 物件所提供的 read() 方法,是從輸入串流取得一個位元組的資料,並傳回該位元組的整數值,但通常您要取得的使用者輸入會是一個字串,或是一組數字,所以 System.in 物件的 read() 方法一次只讀入一個位元組資料的方式並不適用。
200
200
@@ -300,7 +300,7 @@ readLine() 方法會傳回使用者在按下 Enter 鍵之前的所有字元輸
300
300
>
301
301
> 但什麼該闕疑?什麼觀念又該先徹底理解?在這本書中我會根據經驗告訴您,在告訴您闕疑的同時,也會告訴您這些觀念實際上在哪個章節(或網路資料上)會詳細說明。
302
302
303
- ## 3.2.3 標準輸入輸出串流 ##
303
+ ## 3.2.3 標準輸入輸出串流
304
304
305
305
在之前的範例程式中,您使用了 System 類別中的靜態物件 out,它提供標準輸出串流(Stream)輸出,會在程式開始執行之後自動開啟並準備接受指定的資料,它通常對應至顯示輸出(文字模式、終端機輸出),您可以將輸出重新導向至一個檔案,只要執行程式時使用'>'將輸出結果導向至指定的檔案,例如:
306
306
@@ -436,7 +436,7 @@ public class TigerNumberDemo {
436
436
437
437
電腦的原文是「Computer」,電腦的基本作用其實就是運算,要運算就要給它資料,要告訴電腦您給了它哪些資料?是整數還是小數?是文字還是字元?這就是程式語言術語中所謂的「指定變數與資料型態」!在給定了資料之後,接著您就可以叫電腦開始進行各種算術、邏輯、比較、遞增、遞減等等的運算。
438
438
439
- ## 3.3.1 資料型態 ##
439
+ ## 3.3.1 資料型態
440
440
441
441
程式在執行的過程中,需要運算許多的資訊,也需要儲存許多的資訊,這些資訊可能是由使用者輸入、從檔案中取得,甚至是由網路上得到,在程式運行的過程中,這些資訊透過「變數」(Variable)加以儲存,以便程式隨時取用。
442
442
@@ -496,7 +496,7 @@ public class DataRange {
496
496
497
497
其中浮點數所取得是正數的最大與最小範圍,加上負號即為負數可表示的最大與最小範圍。
498
498
499
- ## 3.3.2 變數、常數 ##
499
+ ## 3.3.2 變數、常數
500
500
501
501
502
502
資料是儲存在記憶體中的一塊空間中,為了取得資料,您必須知道這塊記憶體空間的位置,然而若使用記憶體位址編號的話相當的不方便,所以使用一個明確的名稱,變數(Variable)是一個資料儲存空間的表示,您將資料指定給變數,就是將資料儲存至對應的記憶體空間,您呼叫變數時,就是將對應的記憶體空間的資料取出供您使用。
@@ -567,7 +567,7 @@ public class VariableDemo {
567
567
568
568
使用 "final" 來限定的變數,目的通常就是不希望其它的程式碼來變動它的值,例如用於迴圈計數次數的指定(迴圈之後就會學到),或是像圓周率 PI 常數的指定。
569
569
570
- ## 3.3.3 算術運算 ##
570
+ ## 3.3.3 算術運算
571
571
572
572
程式的目的簡單的說就是運算,除了運算還是運算,所以加減乘除這類的操作是少不得的,在 Java 中提供運算功能的就是運算子 (Operator),例如與算術相關的有加(+)、減(-)、乘(* )、除(/)這類的運算子,另外還有一個也很常用的餘除運算子(%),這類以數學運算為主的運算子稱之為「算術運算子」(Arithmetic operator)
573
573
@@ -622,7 +622,7 @@ public class VariableDemo {
622
622
623
623
count = (count + 1) % 360;
624
624
625
- ## 3.3.4 比較、條件運算 ##
625
+ ## 3.3.4 比較、條件運算
626
626
627
627
數學上有比較的運算,像是大於、等於、小於等運算,Java 中也提供了這些運算子,這些運算子稱之為「比較運算子」(Comparison operator),它們有大於(>)、不小於(>=)、小於(<)、不大於(<=)、等於(==)以及不等於(!=)。
628
628
@@ -705,7 +705,7 @@ public class OddDecider {
705
705
請輸入數字: 87
706
706
是否為奇數? 是
707
707
708
- ## 3.3.5 邏輯、位元運算 ##
708
+ ## 3.3.5 邏輯、位元運算
709
709
710
710
大於、小於的運算會了,但如果想要同時進行兩個以上的條件判斷呢?例如分數大於 80 「且」小於 90 的判斷。在邏輯上有 所謂的「且」(And)、「或」(Or)與「反」(Inverse),在 Java 中也提供這幾個基本邏輯運算所需的「邏輯運算子」(Logical operator),分別為「且」(&&)、「或」(||)及「反相」(!)三個運算子。
711
711
來看看範例 3.17 會輸出什麼?
@@ -888,7 +888,7 @@ public class ShiftOperator {
888
888
889
889
> ** 良葛格的話匣子** 位元運算對於沒有學過數位邏輯的初學者來說,會比較難一些,基本上除了像是資訊工程、電機工程相關領域的開發人員會比較常使用位元運算之外,大部份的開發人員可能不常使用位元運算,如果您的專長領域比較不需要使用位元運算,則基本上先瞭解有位元運算這個東西就可以了,不必在這個部份太過鑽研。
890
890
891
- ## 3.3.6 遞增、遞減運算 ##
891
+ ## 3.3.6 遞增、遞減運算
892
892
893
893
遞增(Increment)、遞減(Decrement)與指定(Assignment)運算子,老實說常成為初學者的一個惡夢,因為有些程式中若寫得精簡,這幾個運算子容易讓初學者搞不清楚程式的真正運算結果是什麼;事實上,使用這幾種運算子的目的除了使讓程式看來比較簡潔之外,還可以稍微增加一些程式執行的效率。
894
894
在程式中對變數遞增1或遞減1是很常見的運算,例如:
@@ -901,7 +901,7 @@ public class ShiftOperator {
901
901
902
902
這段程式會分別顯示出 1 與 0 兩個數,您可以使用遞增、遞減運算子來撰寫程式:
903
903
904
- #### ** 範例3 .22 IncrementDecrement.java**
904
+ #### ** 範例 3 .22 IncrementDecrement.java**
905
905
``` java
906
906
public class IncrementDecrement {
907
907
public static void main (String [] args ) {
@@ -919,7 +919,7 @@ public class IncrementDecrement {
919
919
920
920
您可以將遞增或遞減運算子撰寫在變數之前或變數之後,但其實兩種寫法是有差別的,將遞增(遞減)運算子撰寫在變數前時,表示先將變數的值加(減)1,然後再傳回變數的值,將遞增(遞減)運算子撰寫在變數之後,表示先傳回變數值,然後再對變數加(減)1,例如:
921
921
922
- #### ** 範例3 .23 IncrementDecrement2.java**
922
+ #### ** 範例 3 .23 IncrementDecrement2.java**
923
923
``` java
924
924
public class IncrementDecrement2 {
925
925
public static void main (String [] args ) {
@@ -936,7 +936,7 @@ public class IncrementDecrement2 {
936
936
937
937
在這段程式中,number 的值會前後分別顯示為 1 與 0,再看看範例 3.24。
938
938
939
- #### ** 範例3 .24 IncrementDecrement3.java**
939
+ #### ** 範例 3 .24 IncrementDecrement3.java**
940
940
``` java
941
941
public class IncrementDecrement3 {
942
942
public static void main (String [] args ) {
@@ -955,7 +955,7 @@ public class IncrementDecrement3 {
955
955
956
956
接下來看「指定運算子」(Assignment operator),到目前為止您只看過一個指定運算子,也就是 '=' 這個運算子,事實上指定運算子還有以下的幾個:
957
957
958
- #### ** 表3 .3 指定運算子**
958
+ #### ** 表 3 .3 指定運算子**
959
959
960
960
| 指定運算子| 範例 | 結果
961
961
| :-------- | :----- | :------
@@ -1024,7 +1024,7 @@ public class IncrementDecrement3 {
1024
1024
1025
1025
範例 3.25 是個簡單的程式,使用if條件式來判斷使用者的輸入是奇數還是偶數。
1026
1026
1027
- #### ** 範例3 .25 OddDecider3.java**
1027
+ #### ** 範例 3 .25 OddDecider3.java**
1028
1028
``` java
1029
1029
import java.util.Scanner ;
1030
1030
@@ -1158,7 +1158,7 @@ switch 只能比較數值或字元,不過別以為這樣它就比 if 來得沒
1158
1158
1159
1159
來看看範例 3.26 的成績等級比對如何使用 switch 來改寫。
1160
1160
1161
- #### ** 範例3 .27 ScoreLevel2.java**
1161
+ #### ** 範例 3 .27 ScoreLevel2.java**
1162
1162
``` java
1163
1163
import java.util.Scanner ;
1164
1164
@@ -1283,7 +1283,7 @@ public class NineTable {
1283
1283
1284
1284
for 括號中的每個陳述區塊是以分號 ';' 作區隔,而在一個陳述區塊中若想寫兩個以上的陳述句,則使用逗號 ',' 作區隔,有興趣的話,看看範例 3.30 中九九乘法表的寫法,它只使用了一個 for 迴圈就可以完成九九乘法表的列印,執行結果與範例 3.29 是一樣的。
1285
1285
1286
- #### ** 範例3 .30 NineTable2.java**
1286
+ #### ** 範例 3 .30 NineTable2.java**
1287
1287
``` java
1288
1288
public class NineTable2 {
1289
1289
public static void main (String [] args ) {
@@ -1312,7 +1312,7 @@ Java 提供 while 迴圈式,它根據您所指定的條件式來判斷是否
1312
1312
1313
1313
一個計算輸入成績平均的程式如範例 3.31 所示。
1314
1314
1315
- #### ** 範例3 .31 ScoreAverage.java**
1315
+ #### ** 範例 3 .31 ScoreAverage.java**
1316
1316
``` java
1317
1317
import java.util.Scanner ;
1318
1318
@@ -1371,7 +1371,7 @@ while 迴圈有時稱之為「前測式迴圈」,因為它在迴圈執行前
1371
1371
1372
1372
注意 while 後面是以分號 ';'作為結束,這個很常被忽略;由於 do while 會先執行迴圈,所以它通常用於進行一些初始化或介面溝通的動作,例如範例 3.32 所示。
1373
1373
1374
- #### ** 範例3 .32 OddDecider4.java**
1374
+ #### ** 範例 3 .32 OddDecider4.java**
1375
1375
``` java
1376
1376
import java.util.Scanner ;
1377
1377
@@ -1425,7 +1425,7 @@ continue 的作用與 break 類似,主要使用於迴圈,所不同的是 bre
1425
1425
1426
1426
break 與 continue 還可以配合標籤使用,例如本來 break 只會離開 for 迴圈,設定標籤與區塊,則可以離開整個區塊,範例 3.33 舉個簡單的示範。
1427
1427
1428
- #### ** 範例3 .33 BreakTest.java**
1428
+ #### ** 範例 3 .33 BreakTest.java**
1429
1429
``` java
1430
1430
public class BreakTest {
1431
1431
public static void main (String [] args ) {
0 commit comments