Presentation is loading. Please wait.

Presentation is loading. Please wait.

第 3 章 Java基本語法 製作.

Similar presentations


Presentation on theme: "第 3 章 Java基本語法 製作."— Presentation transcript:

1 第 3 章 Java基本語法 製作

2 資料型別、變數與常數 - 資料型別 在Java中定義了八種基本的資料型態,它們是byte、short、int、long、float、double、char、boolean,以下將把資料型態分為四類加以介紹: 整數 – byte、short、int與long屬於此類。 浮點數 – float與double屬於此類。 字元 – char屬於此類。 布林值 – boolean屬於此類。

3 資料型別、變數與常數 - 資料型別 整數 型別 記憶體空間 名稱 可代表數值的範圍 byte 8 bit 位元組 從 -128到127
資料型別、變數與常數 - 資料型別 整數 型別 記憶體空間 名稱 可代表數值的範圍 byte 8 bit 位元組 從 -128到127 short 16 bit 短整數 從 -32,768到32,767的整數 int 32 bit 整數 從 -2,147,483,648到2,147,483,647的整數 long 64 bit 長整數 從 -9,223,372,036,854,775,808到9,223,372,036,854,775,807的整數

4 資料型別、變數與常數 - 資料型別 浮點數 型別 記憶體空間 名稱 可代表數值的範圍 float 32 bit 浮點數
資料型別、變數與常數 - 資料型別 浮點數 型別 記憶體空間 名稱 可代表數值的範圍 float 32 bit 浮點數 從3.4 e-038到3.4 e+038 double 64 bit 倍精度浮點數 從1.7 e-308到1.7 e+308

5 資料型別、變數與常數 - 資料型別 字元 用於儲存字元資料的型別為char,由於Java的char型別使用全球文字碼(Unicode),因此 所佔記憶體空間為16位元。一般程式語言用於 儲存字元的型別,大多僅佔用8位元,且無法表 達出世界上使用的所有文字。

6 資料型別、變數與常數 - 資料型別 布林值 型別為布林值的資料,其資料值僅有true(真)與false(假)兩種,常用於程式流程的控制。 在Java中,用於儲存布林值的型別為boolean。

7 資料型別、變數與常數 - 變數與常數 變數(Variable)就是程式中變動的資料。在 程式中,通常以一個名稱來代表某個變數。
資料型別、變數與常數 - 變數與常數 變數(Variable)就是程式中變動的資料。在 程式中,通常以一個名稱來代表某個變數。 常數(Constant)則是程式中不會變動的資料,用於代表一特定值,請看下面的例子。 X = 1;

8 資料型別、變數與常數 - 變數與常數 在JSP網頁中,若欲使用某變數時,必須經過變數宣告的動作,語法如下: 資料型別 變數名稱;
資料型別、變數與常數 - 變數與常數 在JSP網頁中,若欲使用某變數時,必須經過變數宣告的動作,語法如下: 資料型別 變數名稱; 欲同時宣告一個以上的同類別變數時,可運用『,』符號,將變數名稱隔開。 資料型別 變數名稱1, 變數名稱2, …;

9 資料型別、變數與常數 - 變數與常數 以下敘述將宣告一個型別為整數(int),名稱 為 A的變數。 int A;
資料型別、變數與常數 - 變數與常數 以下敘述將宣告一個型別為整數(int),名稱 為 A的變數。 int A; 下面的語法將同時宣告A、B為整數變數。 int A, B; JSP並不限定宣告變數的位置,您可以在需要 使用變數時,即時宣告。

10 資料型別、變數與常數 - 變數與常數 欲將值設定給該變數時,須運用『 =』 指派 運算子,語法如下: 變數名稱 = 值;
資料型別、變數與常數 - 變數與常數 欲將值設定給該變數時,須運用『 =』 指派 運算子,語法如下:  變數名稱 = 值; 例如下面的敘述,即將100指派給A變數。 A = 100;

11 資料型別、變數與常數 - 變數與常數 在宣告變數的同時,亦可同時起始變數值。 以下敘述,將在宣告A變數的同時,將變數值 起始為100。
資料型別、變數與常數 - 變數與常數 在宣告變數的同時,亦可同時起始變數值。 以下敘述,將在宣告A變數的同時,將變數值 起始為100。 int A = 100;

12 資料型別、變數與常數 - 變數與常數 對於變數名稱的使用有以下的限制:
資料型別、變數與常數 - 變數與常數 對於變數名稱的使用有以下的限制: 不能與Java所使用的保留字相同,如:您不能宣告一個名為for的變數,因為for是Java中迴圈敘述的保留字。 變數名稱可利用英文字母、數字以及除了『.』點以外標點符號所組成。 在同一個變數的可見範圍中,變數名稱必須是唯一的。不過,在Java中,英文有大小寫的區別,換言之,a變數與A變數,將代表不同的變數。 避免使用底線(_)與金錢符號($),以免被誤認為系統變數。

13 資料型別、變數與常數 - 變數與常數 當某變數宣告於某JSP網頁中時,若該宣告敘述  出現在某『{…}』符號的包含範圍中,則該變數僅可在『{…}』內使用。離開了該範圍後,變數將無法存取。

14 運算子 - 運算子與算式 運算子為程式中用於執行計算動作的符號。 在Java中,依照所執行的計算動作,可將運算子歸類如下: 算術運算子
運算子 運算子與算式 運算子為程式中用於執行計算動作的符號。 在Java中,依照所執行的計算動作,可將運算子歸類如下: 算術運算子 比較運算子 邏輯運算子 字串運算子 指派運算子

15 運算子 運算子與算式 由變數與運算子所構成,用於代表一連串計算動作的式子稱之為運算式。

16 運算子 - 算術運算子 算術運算子與運用語法整理如下表: 運算子符號 名 稱 使用語法範例 當A=7.0,B=2時使用語法範例的運算結果 +
運算子 算術運算子 算術運算子與運用語法整理如下表: 運算子符號 名 稱 使用語法範例 當A=7.0,B=2時使用語法範例的運算結果 + 相加 A + B = 9 - 相減 A – B 7.0 – 2 = 5 * 相乘 A * B 7.0 * 2 = 14 / 相除 A / B 7.0 / 2 = 3.5 % 取餘數 A MOD B 7.0 % 2 = 1

17 運算子 - 運算子與算式 算術運算子中的加法運算子 - 『+』,除了執行 數值的加法運算外,運用於字串時可串接兩字串,如:
運算子 運算子與算式 算術運算子中的加法運算子 - 『+』,除了執行 數值的加法運算外,運用於字串時可串接兩字串,如: str = "ABC" + "DEF"; 上述運算式中,str變數的值將為『ABCDEF』。若欲串接數值與字串時,亦可使用『+』運算子。 str2 = "ABC" + 123;

18 運算子 - 比較運算子 Java的比較運算子整理如下表: 運算子符號 名 稱 使用語法範例 當A=7,B=2時的計算結果 == 等於
運算子 比較運算子 Java的比較運算子整理如下表: 運算子符號 名 稱 使用語法範例 當A=7,B=2時的計算結果 == 等於 A == B > 大於 A > B < 小於 A < B >= 大於等於 A >= B <= 小於等於 A <= B != 不等於 A != B

19 運算子 - 邏輯運算子 Java中的邏輯運算子整理如下: 運算子符號 名 稱 使用語法範例 說明 && 且 A && B
運算子 邏輯運算子 Java中的邏輯運算子整理如下: 運算子符號 名 稱 使用語法範例 說明 && A && B 當A、B均為真時,結果為真 || A || B 當A、B其中之一為真時為真 ! ! A 當A為真時為假

20 運算子 - 邏輯運算子 下表稱為真值表,T代表『真』,F代表『假』。我們整理當A、B在各種情形下,各邏輯運算子的運算結果: A B
運算子 邏輯運算子 下表稱為真值表,T代表『真』,F代表『假』。我們整理當A、B在各種情形下,各邏輯運算子的運算結果: A B A && B A || B ! A T F

21 運算子 - 『=』運算子 在程式中,應該以『指派符號』代替『等號』做為『=』運算子的名稱。
運算子 『=』運算子 在程式中,應該以『指派符號』代替『等號』做為『=』運算子的名稱。 『=』符號在程式裡的意義與數學上的意義並不完全相同,但許多人在觀念上仍以『等號』看待它。 在程式中大部份的地方,的確也可以用『等號』的觀念來解釋『=』符號。比如: 式一:A = 1 + 2

22 運算子 - 『=』運算子 在式一中,可很容易地就能看出A的值為3,所以在這裡用『等號』的觀念來解釋,並沒有困難。
運算子 『=』運算子 在式一中,可很容易地就能看出A的值為3,所以在這裡用『等號』的觀念來解釋,並沒有困難。 但是下面的式二也常在程式中出現,比如: 式二:A = A + 1 如果再用『等號』的觀念解釋式二中的『=』符號,就怎麼也說不通了。

23 運算子 - 『=』運算子 在程式裡,不應用『等號』的觀念來看『=』符號。而應該解釋為『指派』。
運算子 『=』運算子 在程式裡,不應用『等號』的觀念來看『=』符號。而應該解釋為『指派』。 當用『指派』的觀念解釋『=』符號時,式二的 意義將可以很容易地解釋。 式二的計算方式是將A中儲存的資料取出來,並 加一後,再把這個值放回A變數原先儲存的記憶 體空間裡。

24 運算子 - 遞增、遞減運算子 在Java裡,有++(遞增)運算子與--(遞減)運算子。這兩個運算子,用於將變數值增加1或者減少1, 例如:
運算子 遞增、遞減運算子 在Java裡,有++(遞增)運算子與--(遞減)運算子。這兩個運算子,用於將變數值增加1或者減少1, 例如: i++; 相當於 i = i + 1; i--; 則相當於 i = i - 1;

25 運算子 - 算術指派運算子 以下為各種算術指派運算子的使用範例: 運算子 範例 相當於 += A = A + 3 A += 3 -=
運算子 算術指派運算子 以下為各種算術指派運算子的使用範例: 運算子 範例 相當於 += A = A + 3 A += 3 -= A = A - 3 A -= 3 /= A = A / 3 A /= 3 *= A = A * 3 A *= 3 %= A = A % 3 A %= 3

26 運算子 - 各運算子的計算順序 運算子的計算順序觀念,就是當一道運算式中, 存在許多運算子時,處理每一個運算子的順序。
運算子 各運算子的計算順序 運算子的計算順序觀念,就是當一道運算式中, 存在許多運算子時,處理每一個運算子的順序。 若遇到處理順序相同的,則以左邊的運算子優先。 這個概念其實就是數學中先乘除後加減的觀念。

27 運算子 - 各運算子的計算順序 下表將表達出Java中各類運算子的運算順序: 優先次序 高 低 符 號 算術 ++(遞增)、 --(遞減)
運算子 各運算子的計算順序 下表將表達出Java中各類運算子的運算順序: 優先次序 符 號 算術 ++(遞增)、 --(遞減) -(負數)、 +(正數) *(乘)、/(除) % (餘數) +(加)、 -(減) 比較 ==、>、<、>=、<=、!= (優先順序相同,在運算式較左邊的優先) 邏輯 !(否) &&(且) ||(或) 指派 = (指派)、算術指派

28 運算子 - 各運算子的計算順序 表中各運算子的優先次序為由上至下,由左至右。
運算子 各運算子的計算順序 表中各運算子的優先次序為由上至下,由左至右。 因此運算式中,以算術運算子最優先。在算術運算子中,又以最左方的++運算子與--運算子為最優先。 當電腦執行到一行運算式時,將會先執行遞增或 遞減運算子,然後再處理其他的運算子。若有括號時,則優先計算括號內的算式。

29 運算子 - 各運算子的計算順序 以下的例子,將說明運算子的優先處理順序。 5*2 > 6 && 7+8 < 8
運算子 各運算子的計算順序 以下的例子,將說明運算子的優先處理順序。 5*2 > 6 && 7+8 < 8 首先,電腦將會先完成上式中,算術運算子的運算,計算出5*2=10與7+8=15,如下所示: 10 > 6 && 15 < 8 然後,整理比較運算的部份得到下面的結果: true && false 最後得到結果為false

30 運算子 - 各運算子的計算順序 再舉一個算術運算子的例子: A = 5 * ( 2 * 2 ) + 6 / 2
運算子 各運算子的計算順序 再舉一個算術運算子的例子: A = 5 * ( 2 * 2 ) + 6 / 2 第一步先計算括號內的算式(2*2=4),得到  下面的結果。 A = 5 * / 2 計算乘除,得到下面的結果。 A = 最後得到 A = 23 

31 運算子 - 型別轉換 在Java中,當算式執行運算時,必須將運算式中,欲計算的所有資料之型別,都轉換成同一型別。
運算子 型別轉換 在Java中,當算式執行運算時,必須將運算式中,欲計算的所有資料之型別,都轉換成同一型別。 Java亦提供一個自動執行型別轉換的機制,能 夠在執行運算時,自動轉換運算式中資料的型別,例如:『 』這個式子,1將會先轉換為1.0,然後才與2.5相加。

32 運算子 - 型別轉換 自動型別轉換的規則,均是將資料的型別,從 佔記憶體空間小者,轉換為佔記憶體空間大者。
運算子 型別轉換 自動型別轉換的規則,均是將資料的型別,從  佔記憶體空間小者,轉換為佔記憶體空間大者。 舉例來說,int型別可以表示byte型別所代表的 資料。但是byte型別卻無法完整的表示出所有int型別所表示的資料。 所以,byte型別的資料可以轉換為int型別,但是int型別的資料,不可以轉換為byte。

33 運算子 - 型別轉換 以下將運用這道運算式,並配合運算子的計算 優先順序,講解自動型別轉換的過程。
運算子 型別轉換 以下將運用這道運算式,並配合運算子的計算  優先順序,講解自動型別轉換的過程。  R = i / d + f * d – l 式中變數的資料型別為i(int)、 f(float)、 d(double)、 l(long)、R(double)。

34 運算子 - 型別轉換 下圖是運算式計算時,資料型別轉換的過程。 i / d + f * - l 原資料型別 int double float
運算子 型別轉換 下圖是運算式計算時,資料型別轉換的過程。 i / d + f * - l 原資料型別 int double float long R(double) =

35 運算子 - 型別轉換 編譯器在編譯的過程中,將自動執行型別轉換。 若有需要時,亦可自行強迫轉換型別,其語法如下: (欲轉換的型別) 運算式;
運算子 型別轉換 編譯器在編譯的過程中,將自動執行型別轉換。 若有需要時,亦可自行強迫轉換型別,其語法如下:  (欲轉換的型別) 運算式; (欲轉換的型別) 變數;

36 運算子 - 型別轉換 比如,當7/2時,由於7與2都是整數,相除後的 計算結果,也是整數。所以,7/2的計算結果等於3,而不是3.5。
運算子 型別轉換 比如,當7/2時,由於7與2都是整數,相除後的 計算結果,也是整數。所以,7/2的計算結果等於3,而不是3.5。 想要解決這個問題,可以將7先強制轉型為浮點數,再執行運算。 (float)7 / 2; 上式的計算結果將為3.5。

37 流程控制 - 流程控制的用途與種類 流程控制是程式中,用於控制或選擇某一程式 區段執行方式的語法。 流程控制分為兩類:
流程控制 流程控制的用途與種類 流程控制是程式中,用於控制或選擇某一程式  區段執行方式的語法。 流程控制分為兩類: 判斷敘述-利用條件式,進而決定要執行哪一個    程式區段。 迴圈-配合條件式,控制某程式區段的重複執行。

38 流程控制 - 流程控制的用途與種類 判斷結構最基本類型的語法如下所示: if (條件式)
流程控制 流程控制的用途與種類 判斷結構最基本類型的語法如下所示: if (條件式) 程式區段; 若程式敘述不止一行時,則需用『{…}』,標示這些程式區段。 if (條件式){ …… }

39 流程控制 流程控制的用途與種類 if後的條件式,經過運算將傳回true或false。 傳回true時,則執行程式區段。若為false,則 跳過程式區段。 因此,判斷結構語法是靠條件式傳回的布林值, 做為程式區段是否被執行的依據。

40 流程控制 - 流程控制的用途與種類 迴圈控制語法如下所示: while (條件式){ 若程式敘述只有一行時,可省略{與}符號。 程式區段;
流程控制 流程控制的用途與種類 迴圈控制語法如下所示: while (條件式){ 程式區段; …… } 若程式敘述只有一行時,可省略{與}符號。

41 流程控制 流程控制的用途與種類 當while後的條件式傳回值為true時,則執行程 式區段,直到條件式傳回值為false時,才跳出 迴圈。 因此,當迴圈被執行時,一定會有改變條件式內,某變數的敘述,否則條件式的計算結果將永遠不會為false,也就無法跳出迴圈的控制。

42 流程控制 - if判斷敘述 if判斷結構依照功能可以分為以下兩類: 單一條件判斷敘述:
if判斷結構依照功能可以分為以下兩類: 單一條件判斷敘述: 利用一條件式控制程式是否執行某程式敘述或 由兩程式敘述中擇一執行。此判斷敘述將利用 if或if…else…建立。 多條件判斷敘述: 利用多種條件控制程式所執行的敘述,此判斷 敘述將以if…else if...else…建立。

43 流程控制 if判斷敘述 單一條件判斷敘述 語法一:(控制單一程式敘述) if (條件式){ 程式敘述; …… }

44 流程控制 if判斷敘述 語法一其執行流程圖如下:

45 流程控制 - if判斷敘述 語法二:(兩程式敘述擇一執行) 程式敘述一; …...; } else { 程式敘述二; ……;
語法二:(兩程式敘述擇一執行) if (條件式) { 程式敘述一; …...; } else { 程式敘述二; ……;

46 流程控制 if判斷敘述 語法二其執行流程圖如下:

47 流程控制 if判斷敘述 多條件判斷敘述 當選擇執行程式的判斷條件不止一個時,就必須利用if…else if…else建立流程控制,語法如下:  if (條件式A) { 程式敘述一; ……} else if (條件式B){ 程式敘述二; …… } else if …… …… else{ 程式敘述N; }

48 流程控制 if判斷敘述 上頁的語法,其執行流程圖如下:

49 流程控制 - if判斷敘述 巢狀判斷敘述是一種可以達成與多條件判斷敘述 類似功能的判斷敘述。
巢狀判斷敘述是一種可以達成與多條件判斷敘述 類似功能的判斷敘述。 當在判斷式的程式敘述中,又利用一個判斷敘述 進行判斷,此時便有兩層判斷敘述,這就是所謂 的巢狀判斷敘述。

50 流程控制 - if判斷敘述 巢狀判斷敘述,如下所示: if (條件式A){ if (條件式B) 程式敘述一; else 程式敘述二; }
巢狀判斷敘述,如下所示: if (條件式A){ if (條件式B) 程式敘述一; else 程式敘述二; } else{ if (條件式C) 程式敘述三; 程式敘述四;

51 流程控制 巢狀判斷敘述 以下為整個巢狀判斷敘述的執行流程圖:

52 流程控制 switch case判斷敘述 switch case判斷敘述用於針對某運算式的不同值,進行條件的判斷,然後從多個程式敘述中   選擇執行其中某一程式敘述。

53 流程控制 - switch case判斷敘述 其語法如下: switch case 運算式(或變數) { case 條件式一 :
其語法如下:  switch case 運算式(或變數) { case 條件式一 : 程式敘述一; break; case 條件式二 : 程式敘述二; ……… case else 程式敘述N; }

54 流程控制 switch case判斷敘述 switch case其執行流程如下圖所示:

55 流程控制 - for迴圈 迴圈語法如下: for(起始運算式; 測試條件式 ; 遞增運算式){ 程式敘述; …… }
迴圈語法如下:  for(起始運算式; 測試條件式 ; 遞增運算式){ 程式敘述; …… } 起始運算式:用於設定計次變數起始值,起始運算式只在進入迴圈的時候執行。 測試條件式:計次變數的限制條件式,若為真,則進入迴圈執行程式區段,若為假則跳出迴圈。 遞增運算式:執行完程式區段後,利用運算式二更改計次變數。

56 流程控制 - for迴圈 以下為將重覆執行out物件println方法三次的 for迴圈。 其中遞增運算式(i=i+1),亦可以i++代替。
以下為將重覆執行out物件println方法三次的  for迴圈。  for( i = 1; i <= 3; i = i + 1){   out.println(”迴圈3次執行的第” + i + ”次”); 其中遞增運算式(i=i+1),亦可以i++代替。

57 流程控制 for迴圈 執行流程如下圖所示:

58 流程控制 - for迴圈 以上迴圈的執行過程中,將各種計次變數值的 變化以表格表示如下: 執行次數 進入時的i 值 輸出 執行後的i值
以上迴圈的執行過程中,將各種計次變數值的  變化以表格表示如下: 執行次數 進入時的i 值 輸出 執行後的i值 第一次 1 迴圈3次執行的第1次 2 第二次 迴圈3次執行的第2次 3 第三次 迴圈3次執行的第3次 4 第四次

59 流程控制 - for迴圈 巢狀for迴圈 當for迴圈內還有另一個for迴圈時,就形成了巢狀的for迴圈:
巢狀for迴圈 當for迴圈內還有另一個for迴圈時,就形成了巢狀的for迴圈: for( i = 0; i < 10 ; i++ ){  for( j = 0; j < 10; j++){   程式敘述; …… }

60 流程控制 - while迴圈 while迴圈的語法如下:
while迴圈的語法如下: while(條件式){ 程式敘述; …… } 進入此迴圈時,將會先檢查條件式的值是否為true,真時則進入迴圈,false時則跳過此迴圈。

61 流程控制 - while迴圈 進入迴圈以後,每執行迴圈一次,便檢查條件式 值是否為false。為false時,則跳出,true則 繼續執行。
進入迴圈以後,每執行迴圈一次,便檢查條件式 值是否為false。為false時,則跳出,true則 繼續執行。 在迴圈內程式敘述的執行過程中,勢必要能夠造 成條件式值的變動,否則條件式的回傳值永遠為true,將形成無窮迴圈。

62 流程控制 while迴圈 執行流程如下圖所示:

63 流程控制 - while迴圈 do…while迴圈的語法如下:
do…while迴圈的語法如下:  do { 程式敘述; …… }while(條件式); do…while迴圈的執行過程為先執行程式區段, 然後判斷條件式是否為真,為真則繼續執行,直 到條件式值為假時跳出。 別忘了這個分號

64 流程控制 while迴圈 執行流程圖如下:

65 流程控制 - break與continue break敘述
在for迴圈或者while迴圈中,若想在某條件下,強迫中止迴圈的執行時,可以利用if敘述,配合break敘述達到目的。

66 流程控制 - break與continue continue敘述
若想要中止的不是整個迴圈,而只是想在某條件下,中止某次迴圈的執行。讓該次迴圈的執行中,能跳過continue敘述後的程式敘述,直接進入下一次迴圈的執行。便可利用if敘述,配合continue敘述,在某條件下,中止某次迴圈的執行。

67 流程控制 - ( ? : )敘述 ( 判斷式 ? 真值 : 假值 ) 上述敘述中,當判斷式傳回true時,將傳回真值,反之傳回假值。
流程控制 ( ? : )敘述 ( ? : )相當於簡化的if…else敘述,其語法如下: ( 判斷式 ? 真值 : 假值 ) 上述敘述中,當判斷式傳回true時,將傳回真值,反之傳回假值。

68 陣列的宣告 - 什麼是陣列? 陣列是由好幾個陣列元素所組成,每一個單獨的 陣列元素,就相當於一個變數,可用於儲存資料。
陣列的宣告 什麼是陣列? 陣列是由好幾個陣列元素所組成,每一個單獨的 陣列元素,就相當於一個變數,可用於儲存資料。 陣列可視為一連串變數的組合,比如:一個擁有5個元素的陣列,就相當於5個變數,可以容納5個資料。

69 陣列的宣告 什麼是陣列? 陣列中的每個元素都有一個編號,用於存取陣列的元素,這個編號的起始值為1,陣列中的第一個元素索引值為0,依此類推。

70 陣列的宣告 - 陣列的宣告與使用 在Java中,陣列的宣告方式與C/C++,並不相同。
陣列的宣告 陣列的宣告與使用 在Java中,陣列的宣告方式與C/C++,並不相同。 在宣告一個陣列前,須先宣告代表該陣列的陣列 變數,語法如下: 資料型別 陣列名稱[]; 資料型別[] 陣列名稱;

71 陣列的宣告 - 陣列的宣告與使用 然後,再利用new,配置該陣列的記憶體空間,並指定陣列元素的個數,語法如下:
陣列的宣告 陣列的宣告與使用 然後,再利用new,配置該陣列的記憶體空間,並指定陣列元素的個數,語法如下: 陣列名稱 = new 資料型別[元素個數];

72 陣列的宣告 - 陣列的宣告與使用 int intAry[]; 下面的程式片段將宣告一個大小為5,型別為int 的陣列。
陣列的宣告 陣列的宣告與使用 下面的程式片段將宣告一個大小為5,型別為int 的陣列。 int intAry[]; intAry = new int[5]; 宣告出的陣列

73 陣列的宣告 - 陣列的宣告與使用 陣列中元素的引用,必須透過陣列的索引值,也 就是每個元素的編號,其語法如下: 陣列名稱[索引值]
陣列的宣告 陣列的宣告與使用 陣列中元素的引用,必須透過陣列的索引值,也 就是每個元素的編號,其語法如下: 陣列名稱[索引值] 上述語法的索引值為0時,將取得陣列中第一個 元素的值。當取得陣列第n個元素的值時,索引值必須為n-1。

74 陣列的宣告 - 陣列的宣告與使用 下面的程式片段將宣告一個擁有10個元素的 陣列,並將陣列中第5個元素之值設為10。
陣列的宣告 陣列的宣告與使用 下面的程式片段將宣告一個擁有10個元素的 陣列,並將陣列中第5個元素之值設為10。 int intAry[] = new int[10]; intAry[4] = 10;

75 陣列的宣告 - 陣列的宣告與使用 使用陣列時,通常會與for迴圈配合,下面的敘述將設定陣列中每個元素的起始值為0。
陣列的宣告 陣列的宣告與使用 使用陣列時,通常會與for迴圈配合,下面的敘述將設定陣列中每個元素的起始值為0。   for(i = 0; i < 10; i++) intAry[i] = 0;

76 陣列的宣告 - 陣列的宣告與使用 下面的語法將可同時完成陣列的宣告、記憶體 配置與起始值的設定。
陣列的宣告 陣列的宣告與使用 下面的語法將可同時完成陣列的宣告、記憶體 配置與起始值的設定。 資料型別 陣列名稱[] = {元素值1, 元素值2, …}; 以下程式途述,將完成大小為4,型別為int的 陣列宣告與配置,並將陣列中元素的值均起始 設定為0。 int intAry[4] = {0, 0, 0, 0}

77 陣列的宣告 - 二維陣列的宣告 資料型別 陣列名稱[][] = new 資料型別[列數][行數]; 以下是宣告並配置二維陣列的語法:
陣列的宣告 二維陣列的宣告 以下是宣告並配置二維陣列的語法: 資料型別 陣列名稱[][] = new 資料型別[列數][行數]; 以下的程式敘述將宣告出一大小為3列4行,型別為int的二維陣列:  int Ary[][] = new int [3][4];

78 陣列的宣告 - 二維陣列的取用 int a[][] = new int[3][4];
陣列的宣告 二維陣列的取用 二維陣列需要兩個索引(列索引、行索引),  才能存取元素。而每一維度的索引值,亦是由0 開始編號。  int a[][] = new int[3][4];

79 陣列的宣告 - 二維陣列的取用 當運用上面的程式敘述,宣告了大小為3x4的 二維陣列後,陣列元素的排列方式與存取語法 將如下圖所示: 第0行
陣列的宣告 二維陣列的取用 當運用上面的程式敘述,宣告了大小為3x4的  二維陣列後,陣列元素的排列方式與存取語法  將如下圖所示: 第0行 第1行 第2行 第3行 第0列 a [0][0] a [0][1] a [0][2] a [0][3] 第1列 a [1][0] a [1][1] a [1][2] a [1][3] 第2列 a [2][0] a [2][1] a [2][2] a [2][3] 存取元素的語法

80 陣列的宣告 - 二維陣列的取用 二維陣列中值的輸出方式,須藉由兩層的巢狀 迴圈來達到目的。
陣列的宣告 二維陣列的取用 二維陣列中值的輸出方式,須藉由兩層的巢狀  迴圈來達到目的。 以下語法將輸出大小為3列4行之二維陣列中的 元素值。 for( i = 0; i < 3; i++){ for( j = 0; j < 4; j++) out.println(a[i][j]); }

81 陣列的宣告 - 二維陣列的取用 上述迴圈若配合HTML的表格語法,則可將結果 輸出如下圖所示。 第0行 第1行 第2行 第3行 第0列
陣列的宣告 二維陣列的取用 上述迴圈若配合HTML的表格語法,則可將結果 輸出如下圖所示。 第0行 第1行 第2行 第3行 第0列 a [0][0] 值 a [0][1] 值 a [0][2] 值 a [0][3] 值 第1列 a [1][0] 值 a [1][1] 值 a [1][2] 值 a [1][3] 值 第2列 a [2][0] 值 a [2][1] 值 a [2][2] 值 a [2][3] 值

82 陣列的宣告 - 二維陣列的取用 若對調第一、二層迴圈,以下列的語法輸出陣列。 for( j = 0; j < 4; j++){
陣列的宣告 二維陣列的取用 若對調第一、二層迴圈,以下列的語法輸出陣列。 for( j = 0; j < 4; j++){ for( i = 0; i < 3; i++) out.print(a[i][j]); }

83 陣列的宣告 二維陣列的取用 上述迴圈若配合HTML的表格語法,輸出陣列中 的元素,則輸出之表格的陣列元素將行列互換, 將行輸出為列,列輸出為行。 第0列 第1列 第2列 第0行 a [0][0] 值 a [1][0] 值 a [2][0] 值 第1行 a [0][1] 值 a [1][1] 值 a [2][1] 值 第2行 a [0][2] 值 a [1][2] 值 a [2][2] 值 第3行 a [0][3] 值 a [1][3] 值 a [2][3] 值

84 陣列的宣告 - 二維陣列的取用 多維陣列在宣告及使用與二維基本上都是一樣的。
陣列的宣告 二維陣列的取用 多維陣列在宣告及使用與二維基本上都是一樣的。 因此,在宣告的時候,若想宣告N維度的陣列, 就得宣告N個維度的大小: 資料型別 陣列名稱[維度1][維度2]…[維度N] 而取用陣列元素的方式也是一樣的: 陣列名稱[維度1索引][維度2索引]…[維度N索引]

85 陣列的宣告 陣列長度的取得 欲取得陣列的長度時,可以利用陣列的length 屬性,語法如下: 整數變數 = 陣列變數.length

86 Java與物件導向觀念 物件導向觀念,是以現實世界中的『物件』做為 程式設計或者撰寫時,思考問題的『導向』。
物件導向觀念,是以現實世界中的『物件』做為 程式設計或者撰寫時,思考問題的『導向』。 對於真實世界的物件(就是物體),在物件導向的觀念裡,想要模擬它們,必須從它們的行為與性質這兩方面著手。

87 Java與物件導向觀念 行為就是在真實世界中,這個物件有什麼樣的 動作,在物件導向觀念中被稱之為方法(Method)。
行為就是在真實世界中,這個物件有什麼樣的  動作,在物件導向觀念中被稱之為方法(Method)。 而性質就是這個物件有哪些特性,例如:顏色、長、寬…等,在物件導向觀念中稱之為屬性(Attribute)。

88 Java與物件導向觀念 以物件導向觀念設計的電腦系統中,將存在許多 物件,由這些物件,彼此合作完成系統的任務。
以物件導向觀念設計的電腦系統中,將存在許多 物件,由這些物件,彼此合作完成系統的任務。 對應到程式設計時,對於每一種物件,都可依據 前述觀念,定義出該種物件的方法與屬性,並建 立類別。 類別與物件的關係,就好像是資料型別與變數的 關係或也可將類別想成一個模子,這個模子將用 於製造、產生物件。

89 Java與物件導向觀念 Java的類別定義語法如下:  class 類別名稱{  …… //類別屬性與方法的定義  }

90 Java與物件導向觀念 … …… 013 public class _HelloWorld__jsp extends com.caucho.jsp.JavaPage{ 014 015 public void 016 _jspService(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException 019 { … …… 046 } 047 048 private com.caucho.java.LineMap _caucho_line_map; … …… 102 } 方法的定義 屬性的定義

91 Java與物件導向觀念 JSP網頁編譯後產生的Servlet是一個類別,  然後類別裡將定義兩種東西,一是屬性,另一個 方法。

92 Java與物件導向觀念 <%@ page improt="欲引用的套件"%> 在Java的套件中,所提供的是一個個的類別。
當在JSP網頁中,欲使某套件時,您必須在網頁 開始的網頁指令中,設定import屬性的值。  page improt="欲引用的套件"%>

93 字串的處理 - Java的String類別 在Java中,對於字串的處理,均藉由java.lang套件中的String類別完成。
下面是宣告字串物件變數的語法: String 變數名稱; 然後,再利用new關鍵字,呼叫String類別的建構子,產生一個字串物件,並設定字串值。 變數名稱 = new String("字串內容");

94 字串的處理 - Java的String類別 下面的語法,則在宣告的同時一併起始字串變數 的值。
  String 變數名稱 = new String("字串內容"); 更簡略的起始值語法,是直接用雙引號(")標示字串。 String 變數名稱 = "字串內容"; 在字串中,各字元的索引值編碼方式,是以0為 起始值,也就是字串中的第一個字元,索引值為0。

95 字串的處理 - Java的String類別 此外,由於Resin伺服器的JSP引擎已預設引用java.lang套件,因此,在JSP網頁中,您不需要 運用import屬性,引用該套件。

96 字串的處理 – 字串的連接 欲連結兩字串時,僅需要利用『+』運算子即可。 此外,您亦可利用『+』運算子,連結字串與數字或者數字變數,如:
字串的處理 – 字串的連接 欲連結兩字串時,僅需要利用『+』運算子即可。 此外,您亦可利用『+』運算子,連結字串與數字或者數字變數,如: age = 27; str = "您好我今年" + age + "歲";

97 字串的處理 – 字串的比較 比較兩個字串時,共有兩種比較方式 欲比較兩字串是否指向同一個字串物件時,可利用『==』運算子,進行比較。
字串的處理 – 字串的比較 比較兩個字串時,共有兩種比較方式 比較兩個字串是否為同一個字串物件 是比較兩字串的內容是否相同 欲比較兩字串是否指向同一個字串物件時,可利用『==』運算子,進行比較。

98 字串的處理 – 字串的比較 若欲比較兩字串內容是否相同時,則必須利用String類別的equals方法,語法如下:
字串的處理 – 字串的比較 若欲比較兩字串內容是否相同時,則必須利用String類別的equals方法,語法如下: 字串變數.equals("字串"); 若與另一個字串物件比較內容時,則語法如下: 字串變數.equals(字串物件);

99 字串的處理 –取得字串長度與大小寫的轉換 欲取得字串長度時,可使用String類別的length方法。語法如下:
字串的處理 –取得字串長度與大小寫的轉換 欲取得字串長度時,可使用String類別的length方法。語法如下: 字串變數.length(); length方法的回傳值為一整數,代表字串的長度。

100 字串的處理 –取得字串長度與大小寫的轉換 欲進行字串內英文字母的大小寫轉換時,可使用String類別的toLowCase方法(轉換為小寫)與toUpperCase(轉換為大寫),其語法如下: 字串變數.toLowerCase(); 字串變數.toUpperCase(); 此兩方法的回傳值均為完成英文字母大小寫轉換後的字串。

101 字串的處理 – 擷取部份字串 欲擷取字串中部份字串時,可使用String類別的substring方法,其語法如下:
字串的處理 – 擷取部份字串 欲擷取字串中部份字串時,可使用String類別的substring方法,其語法如下: 字串變數.substring(int startIndex, int endIndex);

102 字串的處理 – 擷取部份字串 substring方法的回傳值為完成擷取後的子字串。下面是語法各部份的說明。
字串的處理 – 擷取部份字串 substring方法的回傳值為完成擷取後的子字串。下面是語法各部份的說明。 字串變數 - 欲擷取子字串的字串。 startIndex - 欲擷取字串的起始索引值。 endIndex - 欲擷取字串的結束索引值。請注意!此索引值為欲擷取字串後的字元,此字元將不被擷取。

103 字串的處理 – 尋找字元或字串 欲尋找字串時,可使用String類別的indexOf 方法,其語法如下:
字串的處理 – 尋找字元或字串 欲尋找字串時,可使用String類別的indexOf 方法,其語法如下:  字串變數.indexOf(int ch ); 字串變數.indexOf(String substr ); indexOf方法的回傳值為欲尋找之字元,第一次 出現在字串中的位置(字串位置的起始值為0),若找不到該字元時,將傳回-1。

104 字串的處理 – 尋找字元或字串 下面是語法各部份的說明: 字串變數 - 欲尋找某字元的字串。 ch - 欲尋找的字元。
字串的處理 – 尋找字元或字串 下面是語法各部份的說明: 字串變數 - 欲尋找某字元的字串。 ch - 欲尋找的字元。 substr - 欲尋找的子字串。

105 字串的處理 –字元與部份字串的取代 欲取代字串中某字元時,可使用String類別的replace方法,其語法如下:
字串的處理 –字元與部份字串的取代 欲取代字串中某字元時,可使用String類別的replace方法,其語法如下: 字串變數.replace(char oldChar, char newChar); replace方法的回傳值為完成取代後的字串,下面是語法各部份的說明: oldChar - 欲被取代的字元 newChar - 欲取代的字元

106 時間的處理 – Java的Date類別 Date 變數名稱; 變數名稱 = new Date();
在Java中,對於日期/時間的處理,均藉由java.util套件中的Date類別完成。 下面是宣告Date物件變數的語法: Date 變數名稱; 然後,再利用new關鍵字,呼叫Date類別的建構子,產生一個Date物件。 變數名稱 = new Date();

107 時間的處理 – Java的Date類別 所產生的Date物件,為目前的系統時間。
Date物件變數 = new Date(long 毫秒數); Date物件變數 = new Date(int 年, int 月, int 日); Date物件變數 = new Date(int 年, int 月, int 日,               int 時, int 分);               int 時, int 分, int 秒);

108 時間的處理 – Java的Date類別 上述語法的各部份說明如下: Date物件變數 - 欲指向新建立之Date物件的Date物件變數。
毫秒數 - 以1970年1月1日0時0秒為基準,距離 您欲表達之特定時間的毫秒數。 年 - 以1900年為基準,例如:欲建立的時間為1998年時,此參數請輸入98。 月 - 輸入月份,數字範圍為0-11,其中0代表1月,1代表2月,其餘類推。

109 時間的處理 – Java的Date類別 日 - 輸入代表日期的整數,若超過該月的天數時,則 產生的日期,將推算至下一個月。若輸入負數,則向 前推算正確的日期。 時 - 輸入代表小時的整數,若大於23時,超過的部份,將進位至日。 分 - 輸入代表分的整數,若大於59時,超過的部份,將進位至小時。 秒 - 輸入代表秒的整數,若大於59時,超過的部份,將進位至分。

110 時間的處理 –毫秒差的取得與時間間隔的計算
時間的處理 –毫秒差的取得與時間間隔的計算 欲取得Date物件所代表日期/時間,距離1970年 1月1日午夜的毫秒數差,可運用Date類別的getTime方法,其語法如下: Date物件變數.getTime(); 傳回值型態為long的數值,代表毫秒數差。 計算兩Date物件所代表時間的間隔時,僅能得到兩時間的毫秒差。在進行計算時,必須將兩時間均轉換為毫秒數,然後相減。

111 時間的處理 – 各時間欄位的取得與設定 取得Date物件所代表日期/時間的各欄位之方法,列於下表: 方法 說明 getYear()
時間的處理 – 各時間欄位的取得與設定 取得Date物件所代表日期/時間的各欄位之方法,列於下表: 方法 說明 getYear() 取得代表日期的年值,傳出的數值將以1900年為基準,例如:1998年則此方法將僅傳出98。 getMonth() 取得代表日期的月值,傳出的數值將以0代表1月,1代表2月,餘類推。 getDate() 取得代表日期的日值。 getDay() 取得代表日期的星期值。 getHours() 取得代表時間的小時值。 getMinutes() 取得代表時間的分值。 getSeconds() 取得代表時間的秒值。

112 時間的處理 – 各時間欄位的取得與設定 欲設定Date物件所代表日期/時間的各欄位之方法,列於下表: 方法 說明
時間的處理 – 各時間欄位的取得與設定 欲設定Date物件所代表日期/時間的各欄位之方法,列於下表: 方法 說明 setYear(int year) 設定代表日期的年值,輸入的數值將以1900年為基準,例如:1998年僅需輸入98即可。 setMonth(int month) 設定代表日期的月值,設定時請以0代表1月,1代表2月,餘類推。 setDate(int date) 設定代表日期的日值。 setHours(int hours) 設定代表時間的小時值。 setMinutes(int minutes) 設定代表時間的分值。 setSeconds(int seconds) 設定代表時間的秒值。

113 時間的處理 –日期/時間的格式處理與字串轉換
時間的處理 –日期/時間的格式處理與字串轉換 運用java.text.SimpleDateFormat可以將日期 /時間轉換成指定格式的字串。 首先,須宣告SimpleDateFormat類別之物件,並運用格式字元指定欲轉換字串的格式,語法如下: SimpleDateFormat 物件變數 = new SimpleDateFormat(格式字串);

114 時間的處理 –日期/時間的格式處理與字串轉換
時間的處理 –日期/時間的格式處理與字串轉換 接著,呼叫SimpleDateFormat物件的format 方法,將日期/時間物件傳入,便可依照指定格式取得完成轉換的字串,語法如下: String物件 = SimpleDateFormat物件 .format(date物件);

115 時間的處理 –日期/時間的格式處理與字串轉換
時間的處理 –日期/時間的格式處理與字串轉換 若想把字串轉換為日期/時間物件,須運用SimpleDateFormat物件的parse方法,語法 如下: Date date物件 = simpledateformat物件. parse(日期/時間字串);


Download ppt "第 3 章 Java基本語法 製作."

Similar presentations


Ads by Google