第 3 章 java 基本語法

115
第 3 第 Java 第第第第 第第

Upload: kaspar

Post on 21-Jan-2016

75 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: 第 3 章   Java 基本語法

第 3 章 Java 基本語法

製作

Page 2: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

資料型別、變數與常數 - 資料型別

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

Page 3: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

資料型別、變數與常數 - 資料型別

 

型別 記憶體空間 名稱 可代表數值的範圍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的整數

整數

Page 4: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

資料型別、變數與常數 - 資料型別

 

 

型別 記憶體空間 名稱 可代表數值的範圍float 32 bit 浮點數 從 3.4 e-038 到 3.4 e+038

double 64 bit 倍精度浮點數 從 1.7 e-308 到 1.7 e+308

 

浮點數

Page 5: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

資料型別、變數與常數 - 資料型別

 

 

 

字元 用於儲存字元資料的型別為 char ,由於 Java的

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

Page 6: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

資料型別、變數與常數 - 資料型別

 

 

 

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

Page 7: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

資料型別、變數與常數- 變數與常數

 

 

 

變數( Variable )就是程式中變動的資料。在 程式中,通常以一個名稱來代表某個變數。

常數( Constant )則是程式中不會變動的資料,用於代表一特定值,請看下面的例子。

X = 1;

Page 8: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

資料型別、變數與常數- 變數與常數

 

 

 

在 JSP 網頁中,若欲使用某變數時,必須經過變數宣告的動作,語法如下:

資料型別 變數名稱 ;

欲同時宣告一個以上的同類別變數時,可運用『 , 』符號,將變數名稱隔開。

資料型別 變數名稱 1, 變數名稱 2, …;

Page 9: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

資料型別、變數與常數- 變數與常數

 

 

 

以下敘述將宣告一個型別為整數( int ),名稱 為 A 的變數。

int A;

下面的語法將同時宣告 A 、 B 為整數變數。int A, B;

JSP 並不限定宣告變數的位置,您可以在需要 使用變數時,即時宣告。

Page 10: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

資料型別、變數與常數- 變數與常數

 

 

 

欲將值設定給該變數時,須運用 『 = 』 指派 運算子,語法如下:

變數名稱 = 值 ;

例如下面的敘述,即將 100 指派給 A 變數。A = 100;

Page 11: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

資料型別、變數與常數- 變數與常數

 

 

 

在宣告變數的同時,亦可同時起始變數值。

以下敘述,將在宣告 A 變數的同時,將變數值 起始為 100 。

int A = 100;

Page 12: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

資料型別、變數與常數- 變數與常數

 

 

 

對於變數名稱的使用有以下的限制: 不能與 Java 所使用的保留字相同,如:您不能宣告一個

名為 for 的變數,因為 for是 Java 中迴圈敘述的保留字。 變數名稱可利用英文字母、數字以及除了『 . 』點以外

標點符號所組成。 在同一個變數的可見範圍中,變數名稱必須是唯一的。

不過,在 Java 中,英文有大小寫的區別,換言之, a變數與 A 變數,將代表不同的變數。

避免使用底線( _ )與金錢符號( $ ),以免被誤認為系統變數。

Page 13: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

資料型別、變數與常數- 變數與常數

 

 

 

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

Page 14: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 運算子與算式

 

 

 

運算子為程式中用於執行計算動作的符號。

在 Java 中,依照所執行的計算動作,可將運算子歸類如下: 算術運算子 比較運算子 邏輯運算子 字串運算子 指派運算子

Page 15: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 運算子與算式

 

 

 

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

Page 16: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 算術運算子

 

 

 

 

運算子符號 名 稱 使用語法範例 當 A=7.0,B=2 時使用語法範例的運算結果

+ 相加 A + B 7.0 + 2 = 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

 

算術運算子與運用語法整理如下表:

Page 17: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 運算子與算式

 

 

 

算術運算子中的加法運算子 - 『+ 』,除了執行 數值的加法運算外,運用於字串時可串接兩字串,如:

str = "ABC" + "DEF";

上述運算式中, str 變數的值將為『 ABCDEF 』。若欲串接數值與字串時,亦可使用『+ 』運算子。

str2 = "ABC" + 123;

Page 18: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 比較運算子

運算子符號 名 稱 使用語法範例 當 A=7,B=2 時的計算結果== 等於 A == B 假> 大於 A > B 真< 小於 A < B 假>= 大於等於 A >= B 真<= 小於等於 A <= B 假!= 不等於 A != B 真

Java 的比較運算子整理如下表:

Page 19: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 邏輯運算子

Java 中的邏輯運算子整理如下:運算子符號 名 稱 使用語法範例 說明

&& 且 A && B 當 A 、 B均為真時,結果為真|| 或 A || B 當 A 、 B其中之一為真時為真! 反 ! A 當 A 為真時為假

Page 20: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 邏輯運算子

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

A B A && B A || B ! A

T T T T F

F T F T T

F F F F T

T F F T F

Page 21: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 『= 』運算子

在程式中,應該以『指派符號』代替『等號』做為『= 』運算子的名稱。

『= 』符號在程式裡的意義與數學上的意義並不完全相同,但許多人在觀念上仍以『等號』看待它。

在程式中大部份的地方,的確也可以用『等號』的觀念來解釋『= 』符號。比如:

式一: A = 1 + 2

Page 22: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 『= 』運算子

 

 

 

  在式一中,可很容易地就能看出 A 的值為 3 ,所

以在這裡用『等號』的觀念來解釋,並沒有困難。

但是下面的式二也常在程式中出現,比如:式二: A = A + 1

如果再用『等號』的觀念解釋式二中的『= 』符號,就怎麼也說不通了。

 

 

 

Page 23: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 『= 』運算子

 

 

 

  在程式裡,不應用『等號』的觀念來看『= 』符

號。而應該解釋為『指派』。

當用『指派』的觀念解釋『= 』符號時,式二的 意義將可以很容易地解釋。

式二的計算方式是將 A 中儲存的資料取出來,並 加一後,再把這個值放回 A 變數原先儲存的記憶 體空間裡。

 

 

 

Page 24: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 遞增、遞減運算子

 

 

 

  在 Java 裡,有 ++ (遞增)運算子與 -- (遞減)運算

子。這兩個運算子,用於將變數值增加 1 或者減少 1 , 例如:

i++;

相當於i = i + 1;

而i--;

則相當於i = i - 1;

 

 

 

Page 25: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 算術指派運算子

 

 

 

  以下為各種算術指派運算子的使用範例:

 

 

 

 

運算子 範例 相當於+= 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

 

Page 26: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 各運算子的計算順序

 

 

 

  運算子的計算順序觀念,就是當一道運算式中, 

存在許多運算子時,處理每一個運算子的順序。

若遇到處理順序相同的,則以左邊的運算子優先。

這個概念其實就是數學中先乘除後加減的觀念。

 

 

 

 

 

  

 

 

 

 

Page 27: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 各運算子的計算順序

 

 

 

  下表將表達出 Java 中各類運算子的運算順序:  

 

 

 

 

優先次序

高 低優先次序

  

 

 

 

 

 符 號

算術 ++( 遞增 ) 、--( 遞減 )

-( 負數 ) 、+( 正數 )

*( 乘 ) 、 /( 除 )

%( 餘數 )

+( 加 ) 、-( 減 )

比較 == 、 > 、 < 、 >= 、 <= 、 !=( 優先順序相同,在運算式較左邊的優先 )

邏輯 !( 否 ) &&( 且 ) ||( 或 )

指派 = ( 指派 ) 、算術指派

Page 28: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 各運算子的計算順序

 

 

 

  表中各運算子的優先次序為由上至下,由左至右。

因此運算式中,以算術運算子最優先。在算術運算子中,又以最左方的 ++ 運算子與 -- 運算子為最優先。

當電腦執行到一行運算式時,將會先執行遞增或 遞減運算子,然後再處理其他的運算子。若有括號時,則優先計算括號內的算式。

 

 

 

 

 

  

 

 

 

 

Page 29: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 各運算子的計算順序

 

 

 

  以下的例子,將說明運算子的優先處理順序。

5*2 > 6 && 7+8 < 8

首先,電腦將會先完成上式中,算術運算子的運算,計算出 5*2=10與 7+8=15 ,如下所示:

10 > 6 && 15 < 8

然後,整理比較運算的部份得到下面的結果:true && false

最後得到結果為 false

 

 

 

 

 

  

 

 

 

 

Page 30: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 各運算子的計算順序

 

 

 

  再舉一個算術運算子的例子:

A = 5 * ( 2 * 2 ) + 6 / 2

第一步先計算括號內的算式( 2*2=4 ),得到  下面的結果。

A = 5 * 4 + 6 / 2

計算乘除,得到下面的結果。A = 20 + 3

最後得到 A = 23 

 

 

 

 

  

 

 

 

Page 31: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 型別轉換

 

 

 

  在 Java 中,當算式執行運算時,必須將運算式中,

欲計算的所有資料之型別,都轉換成同一型別。

Java 亦提供一個自動執行型別轉換的機制,能 夠在執行運算時,自動轉換運算式中資料的型別,例如:『 1 + 2.5 』這個式子, 1 將會先轉換為1.0 ,然後才與 2.5 相加。

 

  

  

 

 

 

Page 32: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 型別轉換

 

 

 

  自動型別轉換的規則,均是將資料的型別,從  

佔記憶體空間小者,轉換為佔記憶體空間大者。

舉例來說, int 型別可以表示 byte 型別所代表的 資料。但是 byte 型別卻無法完整的表示出所有int 型別所表示的資料。

所以, byte 型別的資料可以轉換為 int 型別,但是 int 型別的資料,不可以轉換為 byte 。

 

 

 

 

 

  

 

 

 

 

Page 33: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 型別轉換

 

 

 

  以下將運用這道運算式,並配合運算子的計算  優先順序,講解自動型別轉換的過程。

R = i / d + f * d – l

式中變數的資料型別為 i( int )、 f( float )、 d( double )、 l( long )、 R( double)。

 

 

 

 

 

  

 

 

 

 

Page 34: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 型別轉換

下圖是運算式計算時,資料型別轉換的過程。     i / d + f * d - l

原資料型別 int   double   float   double   long

型別轉換

           

double   double    

     

double    

 

 

R(double)

= double

Page 35: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 型別轉換

編譯器在編譯的過程中,將自動執行型別轉換。 若有需要時,亦可自行強迫轉換型別,其語法如下:

(欲轉換的型別) 運算式 ;

或(欲轉換的型別) 變數 ;

  

 

 

 

Page 36: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運算子- 型別轉換

比如,當 7/2 時,由於 7 與 2 都是整數,相除後的 計算結果,也是整數。所以, 7/2 的計算結果等於 3 ,而不是 3.5 。

想要解決這個問題,可以將 7 先強制轉型為浮點數,再執行運算。

(float)7 / 2;

上式的計算結果將為 3.5 。

  

 

 

 

Page 37: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - 流程控制的用途與種類

流程控制是程式中,用於控制或選擇某一程式  區段執行方式的語法。

流程控制分為兩類:判斷敘述-利用條件式,進而決定要執行哪一個 

  程式區段。 迴圈-配合條件式,控制某程式區段的重複執行。

  

 

 

 

Page 38: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - 流程控制的用途與種類

判斷結構最基本類型的語法如下所示:if ( 條件式 )

程式區段 ;

若程式敘述不止一行時,則需用『 {…} 』,標示這些程式區段。

if ( 條件式 ){ 程式區段 ; ……

}

  

 

 

 

Page 39: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - 流程控制的用途與種類

if 後的條件式,經過運算將傳回 true或 false 。 傳回 true 時,則執行程式區段。若為 false ,則 跳過程式區段。

因此,判斷結構語法是靠條件式傳回的布林值, 做為程式區段是否被執行的依據。

  

 

 

 

Page 40: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - 流程控制的用途與種類

迴圈控制語法如下所示:while ( 條件式 ){ 程式區段 ; ……}

若程式敘述只有一行時,可省略 { 與 } 符號。

  

 

 

 

Page 41: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - 流程控制的用途與種類

當while 後的條件式傳回值為 true 時,則執行程 式區段,直到條件式傳回值為 false 時,才跳出 迴圈。

因此,當迴圈被執行時,一定會有改變條件式內,某變數的敘述,否則條件式的計算結果將永遠不會為 false ,也就無法跳出迴圈的控制。

  

 

 

 

Page 42: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - if判斷敘述

if判斷結構依照功能可以分為以下兩類:單一條件判斷敘述:

利用一條件式控制程式是否執行某程式敘述或 由兩程式敘述中擇一執行。此判斷敘述將利用 if或 if…else…建立。

多條件判斷敘述: 利用多種條件控制程式所執行的敘述,此判斷

敘述將以 if…else if...else…建立。

  

 

 

 

Page 43: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - if判斷敘述

單一條件判斷敘述 語法一:(控制單一程式敘述)

if ( 條件式 ){ 程式敘述 ;

…… }

  

 

 

 

Page 44: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - if判斷敘述

語法一其執行流程圖如下:

  

 

 

 

條件式

程式敘述

進入判斷式

離開判斷式

Page 45: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - if判斷敘述

語法二:(兩程式敘述擇一執行)if ( 條件式 ) {

程式敘述一 ;…...;

}else {

程式敘述二 ;……;

}

  

 

 

Page 46: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - if判斷敘述

語法二其執行流程圖如下:   

 

 

 

條件式

程式敘述一

進入判斷式

離開判斷式

程式敘述二

Page 47: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - if判斷敘述

多條件判斷敘述 當選擇執行程式的判斷條件不止一個時,就必須利用 if…

else if…else建立流程控制,語法如下: if (條件式 A) {

程式敘述一 ;……}

else if (條件式 B){程式敘述二 ;…… }

else if …………

else{ 程式敘述 N; }

  

 

 

 

Page 48: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - if判斷敘述

上頁的語法,其執行流程圖如下:

  

 

 

 

A條件式

程式敘述一

進入判斷式

離開判斷式

程式敘述二

B條件式

C條件式

程式敘述三

...條件式

N程式敘述(else )敘述

...程式敘述

Page 49: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - if判斷敘述

巢狀判斷敘述是一種可以達成與多條件判斷敘述 類似功能的判斷敘述。

當在判斷式的程式敘述中,又利用一個判斷敘述 進行判斷,此時便有兩層判斷敘述,這就是所謂 的巢狀判斷敘述。

  

 

 

 

Page 50: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

巢狀判斷敘述,如下所示:if ( 條件式 A){

if ( 條件式 B) 程式敘述一 ;

else 程式敘述二 ;

}else{

if ( 條件式 C) 程式敘述三 ; else 程式敘述四 ;

}

  

 

 

 

流程控制 - if判斷敘述

Page 51: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - 巢狀判斷敘述

  

 

 

 

A條件式

進入判斷式

離開判斷式

程式敘述三

C條件式

真假

程式敘述四

程式敘述二

B條件式

假真

程式敘述一

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

Page 52: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - switch case判斷敘述

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

  

 

 

 

Page 53: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - switch case判斷敘述

其語法如下: switch case 運算式(或變數){

case 條件式一 :程式敘述一 ;break;

case 條件式二 :程式敘述二 ;………

break;case else

程式敘述 N;break;

}

  

 

 

 

Page 54: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - switch case判斷敘述

switch case 其執行流程如下圖所示:   

 

 

 

進入判斷式

離開判斷式

Select Case計算 後 的條件式值

條件式值一 程式區段一真

條件式值二 程式區段二真

Case Else N程式區段

......

Page 55: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - for 迴圈

迴圈語法如下: for( 起始運算式 ; 測試條件式 ; 遞增運算式 ){

程式敘述 ; ……

}• 起始運算式:用於設定計次變數起始值,起始運算式

只在進入迴圈的時候執行。• 測試條件式:計次變數的限制條件式,若為真,則進

入迴圈執行程式區段,若為假則跳出迴圈。• 遞增運算式:執行完程式區段後,利用運算式二更改

計次變數。

  

 

 

 

Page 56: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - for 迴圈

以下為將重覆執行 out物件 println 方法三次的  for 迴圈。 for( i = 1; i <= 3; i = i + 1){

  out.println(” 迴圈 3 次執行的第” + i + ” 次” );

其中遞增運算式( i=i+1 ),亦可以 i++ 代替。

  

 

 

 

Page 57: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - for 迴圈

執行流程如下圖所示:   

 

 

 

i <= 3

out.println(" 3 " + i + " ");迴圈 次執行的第 次

進入迴圈

離開迴圈

i = 1

i = i + 1(i++)

Page 58: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - for 迴圈

以上迴圈的執行過程中,將各種計次變數值的  變化以表格表示如下:

  

 

 

 

 

執行次數 進入時的 i 值 輸出 執行後的 i 值第一次 1 迴圈 3 次執行的第 1 次 2

第二次 2 迴圈 3 次執行的第 2 次 3

第三次 3 迴圈 3 次執行的第 3 次 4

第四次 4    

 

Page 59: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - for 迴圈

巢狀 for 迴圈 當 for 迴圈內還有另一個 for 迴圈時,就形成了巢狀的 for 迴圈:

for( i = 0; i < 10 ; i++ ){ for( j = 0; j < 10; j++){  程式敘述 ;

…… }

}

  

 

 

 

 

 

Page 60: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - while 迴圈

while 迴圈的語法如下:while( 條件式 ){

程式敘述 ; ……

}

進入此迴圈時,將會先檢查條件式的值是否為true ,真時則進入迴圈, false 時則跳過此迴圈。

  

 

 

 

 

 

Page 61: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - while 迴圈

進入迴圈以後,每執行迴圈一次,便檢查條件式 值是否為 false 。為 false 時,則跳出, true 則 繼續執行。

在迴圈內程式敘述的執行過程中,勢必要能夠造 成條件式值的變動,否則條件式的回傳值永遠為true ,將形成無窮迴圈。

  

 

 

 

 

 

Page 62: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - while 迴圈

執行流程如下圖所示:  

 

 

 

 

 

條件式

程式敘述

進入迴圈

離開迴圈

Page 63: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - while 迴圈

do…while 迴圈的語法如下: do {

程式敘述 ; ……

}while(條件式 );

do…while 迴圈的執行過程為先執行程式區段, 然後判斷條件式是否為真,為真則繼續執行,直 到條件式值為假時跳出。

  

 

 

 

別忘了這個分號

Page 64: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - while 迴圈

執行流程圖如下:

條件式

程式敘述

進入迴圈

離開迴圈

Page 65: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - break與 continue

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

Page 66: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - break與 continue

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

Page 67: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

流程控制 - ( ? : ) 敘述

( ? : ) 相當於簡化的 if…else 敘述,其語法如下:( 判斷式 ? 真值 : 假值 )

上述敘述中,當判斷式傳回 true 時,將傳回真值,反之傳回假值。

Page 68: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

陣列的宣告 - 什麼是陣列?

陣列是由好幾個陣列元素所組成,每一個單獨的 陣列元素,就相當於一個變數,可用於儲存資料。

陣列可視為一連串變數的組合,比如:一個擁有 5個元素的陣列,就相當於 5 個變數,可以容納 5個資料。

Page 69: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

陣列的宣告 - 什麼是陣列?

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

  

 

 

 10 25 713313

10 25 713313

A變數 B變數 C變數 D變數 E變數

編號

陣列

0 4321

Page 70: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

陣列的宣告 - 陣列的宣告與使用

在 Java 中,陣列的宣告方式與 C/C++ ,並不相同。

在宣告一個陣列前,須先宣告代表該陣列的陣列 變數,語法如下:

資料型別 陣列名稱 [];

或資料型別 [] 陣列名稱 ; 

 

Page 71: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

陣列的宣告 - 陣列的宣告與使用

然後,再利用 new ,配置該陣列的記憶體空間,並指定陣列元素的個數,語法如下:

陣列名稱 = new 資料型別 [ 元素個數 ];

 

 

Page 72: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

陣列的宣告 - 陣列的宣告與使用

下面的程式片段將宣告一個大小為 5 ,型別為 int 的陣列。

int intAry[];

intAry = new int[5];

  

 

  intAry[0] intAry[1] intAry[4]intAry[3]intAry[2]intAry

宣告出的陣列

Page 73: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

陣列的宣告 - 陣列的宣告與使用

陣列中元素的引用,必須透過陣列的索引值,也 就是每個元素的編號,其語法如下:

陣列名稱 [ 索引值 ]

上述語法的索引值為 0 時,將取得陣列中第一個 元素的值。當取得陣列第n個元素的值時,索引值必須為 n-1 。

  

 

 

 

Page 74: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

陣列的宣告 - 陣列的宣告與使用

下面的程式片段將宣告一個擁有 10 個元素的 陣列,並將陣列中第 5 個元素之值設為 10 。

int intAry[] = new int[10];intAry[4] = 10;

  

 

 

 

Page 75: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

陣列的宣告 - 陣列的宣告與使用

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

  

 

 

 

Page 76: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

陣列的宣告 - 陣列的宣告與使用

下面的語法將可同時完成陣列的宣告、記憶體 配置與起始值的設定。 資料型別 陣列名稱 [] = { 元素值 1, 元素值 2, …};

以下程式途述,將完成大小為 4 ,型別為 int 的 陣列宣告與配置,並將陣列中元素的值均起始 設定為 0 。

int intAry[4] = {0, 0, 0, 0}

  

 

 

 

Page 77: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

陣列的宣告 - 二維陣列的宣告

以下是宣告並配置二維陣列的語法:資料型別 陣列名稱 [][] = new 資料型別 [ 列數 ][ 行數 ];

以下的程式敘述將宣告出一大小為 3 列 4 行,型別為 int 的二維陣列: int Ary[][] = new int [3][4];

  

 

 

 

Page 78: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

陣列的宣告 - 二維陣列的取用

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

  

 

 

 

 

 

Page 79: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

陣列的宣告 - 二維陣列的取用

當運用上面的程式敘述,宣告了大小為 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]

 

存取元素的語法

Page 80: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

二維陣列中值的輸出方式,須藉由兩層的巢狀  迴圈來達到目的。

以下語法將輸出大小為 3 列 4 行之二維陣列中的 元素值。

for( i = 0; i < 3; i++){ for( j = 0; j < 4; j++)

out.println(a[i][j]); }

  

 

 

 

 

 

陣列的宣告 - 二維陣列的取用

Page 81: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

上述迴圈若配合 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] 值

陣列的宣告 - 二維陣列的取用

Page 82: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

若對調第一、二層迴圈,以下列的語法輸出陣列。for( j = 0; j < 4; j++){

for( i = 0; i < 3; i++)out.print(a[i][j]);

}

  

 

陣列的宣告 - 二維陣列的取用

Page 83: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

上述迴圈若配合 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] 值

陣列的宣告 - 二維陣列的取用

Page 84: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

多維陣列在宣告及使用與二維基本上都是一樣的。

因此,在宣告的時候,若想宣告 N 維度的陣列, 就得宣告 N個維度的大小: 資料型別 陣列名稱 [ 維度 1][ 維度 2]…[ 維度 N]

而取用陣列元素的方式也是一樣的: 陣列名稱 [ 維度 1 索引 ][ 維度 2 索引 ]…[ 維度 N 索引 ]

  

 

 

陣列的宣告 - 二維陣列的取用

Page 85: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

欲取得陣列的長度時,可以利用陣列的 length  屬性,語法如下:

整數變數 = 陣列變數 .length

  

 

 

陣列的宣告 - 陣列長度的取得

Page 86: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

Java 與物件導向觀念 物件導向觀念,是以現實世界中的『物件』做為 

程式設計或者撰寫時,思考問題的『導向』。

對於真實世界的物件(就是物體),在物件導向的觀念裡,想要模擬它們,必須從它們的行為與性質這兩方面著手。

  

 

Page 87: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

Java 與物件導向觀念 行為就是在真實世界中,這個物件有什麼樣的  

動作,在物件導向觀念中被稱之為方法( Method)。

而性質就是這個物件有哪些特性,例如:顏色、長、寬…等,在物件導向觀念中稱之為屬性( Attribute )。

  

 

Page 88: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

以物件導向觀念設計的電腦系統中,將存在許多 物件,由這些物件,彼此合作完成系統的任務。

對應到程式設計時,對於每一種物件,都可依據 前述觀念,定義出該種物件的方法與屬性,並建 立類別。

類別與物件的關係,就好像是資料型別與變數的 關係或也可將類別想成一個模子,這個模子將用 於製造、產生物件。

Java 與物件導向觀念

Page 89: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

Java 的類別定義語法如下: class 類別名稱 {

…… // 類別屬性與方法的定義 }

Java 與物件導向觀念

Page 90: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

… ……013 public class _HelloWorld__jsp extends

com.caucho.jsp.JavaPage{014 015 public void016 _jspService(javax.servlet.http.HttpServletRequest

request,017 javax.servlet.http.HttpServletResponse response)018 throws java.io.IOException,

javax.servlet.ServletException019 {… ……046 }047048 private com.caucho.java.LineMap _caucho_line_map;… ……102 }

Java 與物件導向觀念

方法的定義

屬性的定義

Page 91: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

JSP 網頁編譯後產生的 Servlet 是一個類別,  然後類別裡將定義兩種東西,一是屬性,另一個 方法。

Java 與物件導向觀念

Page 92: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

在 Java 的套件中,所提供的是一個個的類別。

當在 JSP 網頁中,欲使某套件時,您必須在網頁 開始的網頁指令中,設定 import 屬性的值。 <%@ page improt=" 欲引用的套件 "%>

Java 與物件導向觀念

Page 93: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

字串的處理 - Java的 String 類別

在 Java 中,對於字串的處理,均藉由 java.lang套件中的 String 類別完成。

下面是宣告字串物件變數的語法:String 變數名稱 ;

然後,再利用 new關鍵字,呼叫 String 類別的建構子,產生一個字串物件,並設定字串值。

變數名稱 = new String(" 字串內容 ");

Page 94: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

下面的語法,則在宣告的同時一併起始字串變數 的值。  String 變數名稱 = new String(" 字串內容 ");

更簡略的起始值語法,是直接用雙引號( ")標示字串。

String 變數名稱 = " 字串內容 ";

在字串中,各字元的索引值編碼方式,是以 0 為 起始值,也就是字串中的第一個字元,索引值為 0 。

字串的處理- Java的 String 類別

Page 95: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

此外,由於 Resin伺服器的 JSP引擎已預設引用java.lang套件,因此,在 JSP 網頁中,您不需要 運用 import 屬性,引用該套件。

字串的處理- Java的 String 類別

Page 96: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

字串的處理 – 字串的連接

欲連結兩字串時,僅需要利用『+ 』運算子即可。

此外,您亦可利用『+ 』運算子,連結字串與數字或者數字變數,如:

age = 27; str = " 您好我今年 " + age + "歲 ";

Page 97: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

字串的處理 – 字串的比較

比較兩個字串時,共有兩種比較方式 比較兩個字串是否為同一個字串物件 是比較兩字串的內容是否相同

欲比較兩字串是否指向同一個字串物件時,可利用『== 』運算子,進行比較。

Page 98: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

字串的處理 – 字串的比較

若欲比較兩字串內容是否相同時,則必須利用String 類別的 equals 方法,語法如下:

字串變數 .equals(" 字串 ");

若與另一個字串物件比較內容時,則語法如下:字串變數 .equals( 字串物件 );

Page 99: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

字串的處理 –取得字串長度與大小寫的轉換

欲取得字串長度時,可使用 String 類別的 length方法。語法如下:

字串變數 .length();

length 方法的回傳值為一整數,代表字串的長度。

Page 100: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

字串的處理 –取得字串長度與大小寫的轉換

欲進行字串內英文字母的大小寫轉換時,可使用String 類別的 toLowCase 方法(轉換為小寫)與 toUpperCase (轉換為大寫),其語法如下:

字串變數 .toLowerCase();

字串變數 .toUpperCase();

此兩方法的回傳值均為完成英文字母大小寫轉換後的字串。

Page 101: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

字串的處理 – 擷取部份字串

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

Page 102: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

字串的處理 – 擷取部份字串

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

此索引值為欲擷取字串後的字元,此字元將不被擷取。

Page 103: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

字串的處理 – 尋找字元或字串

欲尋找字串時,可使用 String 類別的 indexOf 方法,其語法如下: 字串變數 .indexOf(int ch );

字串變數 .indexOf(String substr );

indexOf 方法的回傳值為欲尋找之字元,第一次 出現在字串中的位置(字串位置的起始值為 0 ),若找不到該字元時,將傳回 -1 。

Page 104: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

字串的處理 – 尋找字元或字串

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

Page 105: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

欲取代字串中某字元時,可使用 String 類別的replace 方法,其語法如下:字串變數 .replace(char oldChar, char newChar);

replace 方法的回傳值為完成取代後的字串,下面是語法各部份的說明: oldChar - 欲被取代的字元 newChar - 欲取代的字元

字串的處理 –字元與部份字串的取代

Page 106: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

時間的處理 – Java的Date 類別

在 Java 中,對於日期 /時間的處理,均藉由java.util套件中的 Date 類別完成。

下面是宣告 Date物件變數的語法:Date 變數名稱 ;

然後,再利用 new關鍵字,呼叫 Date 類別的建構子,產生一個 Date物件。

變數名稱 = new Date();

Page 107: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

時間的處理 – Java的Date 類別

所產生的 Date物件,為目前的系統時間。

若想建立代表某一特定時間的 Date物件時,可利用以下幾種方式:Date物件變數 = new Date(long 毫秒數 );

Date物件變數 = new Date(int 年 , int 月 , int 日 );Date物件變數 = new Date(int 年 , int 月 , int 日 ,

               int 時 , int 分 );Date物件變數 = new Date(int 年 , int 月 , int 日 ,

               int 時 , int 分 , int 秒 );

Page 108: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

上述語法的各部份說明如下: Date物件變數 - 欲指向新建立之 Date物件的

Date物件變數。毫秒數 - 以 1970年 1 月 1 日 0 時 0 秒為基準,距離 您欲表達之特定時間的毫秒數。

年 - 以 1900年為基準,例如:欲建立的時間為1998年時,此參數請輸入 98 。

月 - 輸入月份,數字範圍為 0-11 ,其中 0 代表 1月, 1 代表 2 月,其餘類推。

時間的處理 – Java的Date 類別

Page 109: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

日 - 輸入代表日期的整數,若超過該月的天數時,則 產生的日期,將推算至下一個月。若輸入負數,則向 前推算正確的日期。

時 - 輸入代表小時的整數,若大於 23 時,超過的部份,將進位至日。

分 - 輸入代表分的整數,若大於 59 時,超過的部份,將進位至小時。

秒 - 輸入代表秒的整數,若大於 59 時,超過的部份,將進位至分。

時間的處理 – Java的Date 類別

Page 110: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

欲取得 Date物件所代表日期 /時間,距離 1970年  1 月 1 日午夜的毫秒數差,可運用 Date 類別的 getTime 方法,其語法如下:

Date物件變數 .getTime();

傳回值型態為 long 的數值,代表毫秒數差。

計算兩 Date物件所代表時間的間隔時,僅能得到兩時間的毫秒差。在進行計算時,必須將兩時間均轉換為毫秒數,然後相減。

時間的處理 –毫秒差的取得與時間間隔的計算

Page 111: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

時間的處理– 各時間欄位的取得與設定

取得 Date物件所代表日期 /時間的各欄位之方法,列於下表:

 

方法 說明

getYear() 取得代表日期的年值,傳出的數值將以 1900年為基準,例如: 1998年則此方法將僅傳出 98。

getMonth() 取得代表日期的月值,傳出的數值將以 0 代表 1 月, 1代表 2 月,餘類推。

getDate() 取得代表日期的日值。getDay() 取得代表日期的星期值。getHours() 取得代表時間的小時值。getMinutes() 取得代表時間的分值。getSeconds() 取得代表時間的秒值。

Page 112: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

欲設定 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) 設定代表時間的秒值。

時間的處理– 各時間欄位的取得與設定

Page 113: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

運用 java.text.SimpleDateFormat 可以將日期 /時間轉換成指定格式的字串。

首先,須宣告 SimpleDateFormat 類別之物件,並運用格式字元指定欲轉換字串的格式,語法如下:

SimpleDateFormat 物件變數 = new SimpleDateFormat( 格式字串 );

 

 

時間的處理–日期 / 時間的格式處理與字串轉換

Page 114: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

接著,呼叫 SimpleDateFormat物件的 format 方法,將日期 /時間物件傳入,便可依照指定格式取得完成轉換的字串,語法如下:

String 物件 = SimpleDateFormat 物件 .format(date 物件 );

 

 

時間的處理–日期 / 時間的格式處理與字串轉換

Page 115: 第 3 章   Java 基本語法

h t tp : / /w w w .b i t c . c o m . tw

若想把字串轉換為日期 /時間物件,須運用SimpleDateFormat物件的 parse 方法,語法 如下:

Date date 物件 = simpledateformat 物件 . parse( 日期 / 時間字串 );

 

 

時間的處理–日期 / 時間的格式處理與字串轉換