1.15k likes | 1.31k Views
第 3 章 Java 基本語法. 製作. 資料型別、變數與常數 - 資料型別. 在 Java 中定義了八種基本的資料型態,它們是 byte 、 short 、 int 、 long 、 float 、 double 、 char 、 boolean ,以下將把資料型態分為四類加以介紹: 整數 – byte 、 short 、 int 與 long 屬於此類。 浮點數 – float 與 double 屬於此類。 字元 – char 屬於此類。 布林值 – boolean 屬於此類。. 資料型別、變數與常數 - 資料型別. 整數.
E N D
資料型別、變數與常數 - 資料型別 • 在Java中定義了八種基本的資料型態,它們是byte、short、int、long、float、double、char、boolean,以下將把資料型態分為四類加以介紹: • 整數 – byte、short、int與long屬於此類。 • 浮點數 – float與double屬於此類。 • 字元 – char屬於此類。 • 布林值 – boolean屬於此類。
資料型別、變數與常數 - 資料型別 字元 • 用於儲存字元資料的型別為char,由於Java的char型別使用全球文字碼(Unicode),因此 所佔記憶體空間為16位元。一般程式語言用於 儲存字元的型別,大多僅佔用8位元,且無法表 達出世界上使用的所有文字。
資料型別、變數與常數 - 資料型別 布林值 • 型別為布林值的資料,其資料值僅有true(真)與false(假)兩種,常用於程式流程的控制。 在Java中,用於儲存布林值的型別為boolean。
資料型別、變數與常數- 變數與常數 • 變數(Variable)就是程式中變動的資料。在 程式中,通常以一個名稱來代表某個變數。 • 常數(Constant)則是程式中不會變動的資料,用於代表一特定值,請看下面的例子。 X = 1;
資料型別、變數與常數- 變數與常數 • 在JSP網頁中,若欲使用某變數時,必須經過變數宣告的動作,語法如下: 資料型別 變數名稱; • 欲同時宣告一個以上的同類別變數時,可運用『,』符號,將變數名稱隔開。 資料型別 變數名稱1, 變數名稱2, …;
資料型別、變數與常數- 變數與常數 • 以下敘述將宣告一個型別為整數(int),名稱 為 A的變數。 int A; • 下面的語法將同時宣告A、B為整數變數。 int A, B; • JSP並不限定宣告變數的位置,您可以在需要 使用變數時,即時宣告。
資料型別、變數與常數- 變數與常數 • 欲將值設定給該變數時,須運用『 =』 指派 運算子,語法如下: 變數名稱 = 值; • 例如下面的敘述,即將100指派給A變數。 A = 100;
資料型別、變數與常數- 變數與常數 • 在宣告變數的同時,亦可同時起始變數值。 • 以下敘述,將在宣告A變數的同時,將變數值 起始為100。 int A = 100;
資料型別、變數與常數- 變數與常數 • 對於變數名稱的使用有以下的限制: • 不能與Java所使用的保留字相同,如:您不能宣告一個名為for的變數,因為for是Java中迴圈敘述的保留字。 • 變數名稱可利用英文字母、數字以及除了『.』點以外標點符號所組成。 • 在同一個變數的可見範圍中,變數名稱必須是唯一的。不過,在Java中,英文有大小寫的區別,換言之,a變數與A變數,將代表不同的變數。 • 避免使用底線(_)與金錢符號($),以免被誤認為系統變數。
資料型別、變數與常數- 變數與常數 • 當某變數宣告於某JSP網頁中時,若該宣告敘述 出現在某『{…}』符號的包含範圍中,則該變數僅可在『{…}』內使用。離開了該範圍後,變數將無法存取。
運算子- 運算子與算式 • 運算子為程式中用於執行計算動作的符號。 • 在Java中,依照所執行的計算動作,可將運算子歸類如下: • 算術運算子 • 比較運算子 • 邏輯運算子 • 字串運算子 • 指派運算子
運算子- 運算子與算式 • 由變數與運算子所構成,用於代表一連串計算動作的式子稱之為運算式。
運算子- 算術運算子 • 算術運算子與運用語法整理如下表:
運算子- 運算子與算式 • 算術運算子中的加法運算子 - 『+』,除了執行 數值的加法運算外,運用於字串時可串接兩字串,如: str = "ABC" + "DEF"; • 上述運算式中,str變數的值將為『ABCDEF』。若欲串接數值與字串時,亦可使用『+』運算子。 str2 = "ABC" + 123;
運算子- 比較運算子 • Java的比較運算子整理如下表:
運算子- 邏輯運算子 • Java中的邏輯運算子整理如下:
運算子- 邏輯運算子 • 下表稱為真值表,T代表『真』,F代表『假』。我們整理當A、B在各種情形下,各邏輯運算子的運算結果:
運算子- 『=』運算子 • 在程式中,應該以『指派符號』代替『等號』做為『=』運算子的名稱。 • 『=』符號在程式裡的意義與數學上的意義並不完全相同,但許多人在觀念上仍以『等號』看待它。 • 在程式中大部份的地方,的確也可以用『等號』的觀念來解釋『=』符號。比如: 式一:A = 1 + 2
運算子- 『=』運算子 • 在式一中,可很容易地就能看出A的值為3,所以在這裡用『等號』的觀念來解釋,並沒有困難。 • 但是下面的式二也常在程式中出現,比如: 式二:A = A + 1 • 如果再用『等號』的觀念解釋式二中的『=』符號,就怎麼也說不通了。
運算子- 『=』運算子 • 在程式裡,不應用『等號』的觀念來看『=』符號。而應該解釋為『指派』。 • 當用『指派』的觀念解釋『=』符號時,式二的 意義將可以很容易地解釋。 • 式二的計算方式是將A中儲存的資料取出來,並 加一後,再把這個值放回A變數原先儲存的記憶 體空間裡。
運算子- 遞增、遞減運算子 • 在Java裡,有++(遞增)運算子與--(遞減)運算子。這兩個運算子,用於將變數值增加1或者減少1, 例如: i++; 相當於 i = i + 1; 而 i--; 則相當於 i = i - 1;
運算子- 算術指派運算子 • 以下為各種算術指派運算子的使用範例:
運算子- 各運算子的計算順序 • 運算子的計算順序觀念,就是當一道運算式中, 存在許多運算子時,處理每一個運算子的順序。 • 若遇到處理順序相同的,則以左邊的運算子優先。 • 這個概念其實就是數學中先乘除後加減的觀念。
優先次序 高 低 高 優先次序 低 運算子- 各運算子的計算順序 • 下表將表達出Java中各類運算子的運算順序:
運算子- 各運算子的計算順序 • 表中各運算子的優先次序為由上至下,由左至右。 • 因此運算式中,以算術運算子最優先。在算術運算子中,又以最左方的++運算子與--運算子為最優先。 • 當電腦執行到一行運算式時,將會先執行遞增或 遞減運算子,然後再處理其他的運算子。若有括號時,則優先計算括號內的算式。
運算子- 各運算子的計算順序 • 以下的例子,將說明運算子的優先處理順序。 5*2 > 6 && 7+8 < 8 首先,電腦將會先完成上式中,算術運算子的運算,計算出5*2=10與7+8=15,如下所示: 10 > 6 && 15 < 8 然後,整理比較運算的部份得到下面的結果: true && false 最後得到結果為false
運算子- 各運算子的計算順序 • 再舉一個算術運算子的例子: A = 5 * ( 2 * 2 ) + 6 / 2 第一步先計算括號內的算式(2*2=4),得到 下面的結果。 A = 5 * 4 + 6 / 2 計算乘除,得到下面的結果。 A = 20 + 3 最後得到A = 23
運算子- 型別轉換 • 在Java中,當算式執行運算時,必須將運算式中,欲計算的所有資料之型別,都轉換成同一型別。 • Java亦提供一個自動執行型別轉換的機制,能 夠在執行運算時,自動轉換運算式中資料的型別,例如:『1 + 2.5』這個式子,1將會先轉換為1.0,然後才與2.5相加。
運算子- 型別轉換 • 自動型別轉換的規則,均是將資料的型別,從 佔記憶體空間小者,轉換為佔記憶體空間大者。 • 舉例來說,int型別可以表示byte型別所代表的 資料。但是byte型別卻無法完整的表示出所有int型別所表示的資料。 • 所以,byte型別的資料可以轉換為int型別,但是int型別的資料,不可以轉換為byte。
運算子- 型別轉換 • 以下將運用這道運算式,並配合運算子的計算 優先順序,講解自動型別轉換的過程。 R = i / d + f * d – l 式中變數的資料型別為i(int)、 f(float)、 d(double)、 l(long)、R(double)。
運算子- 型別轉換 • 下圖是運算式計算時,資料型別轉換的過程。
運算子- 型別轉換 • 編譯器在編譯的過程中,將自動執行型別轉換。 若有需要時,亦可自行強迫轉換型別,其語法如下: (欲轉換的型別) 運算式; 或 (欲轉換的型別) 變數;
運算子- 型別轉換 • 比如,當7/2時,由於7與2都是整數,相除後的 計算結果,也是整數。所以,7/2的計算結果等於3,而不是3.5。 • 想要解決這個問題,可以將7先強制轉型為浮點數,再執行運算。 (float)7 / 2; 上式的計算結果將為3.5。
流程控制 - 流程控制的用途與種類 • 流程控制是程式中,用於控制或選擇某一程式 區段執行方式的語法。 • 流程控制分為兩類: • 判斷敘述-利用條件式,進而決定要執行哪一個 程式區段。 • 迴圈-配合條件式,控制某程式區段的重複執行。
流程控制 - 流程控制的用途與種類 • 判斷結構最基本類型的語法如下所示: if (條件式) 程式區段; • 若程式敘述不止一行時,則需用『{…}』,標示這些程式區段。 if (條件式){ 程式區段; …… }
流程控制 - 流程控制的用途與種類 • if後的條件式,經過運算將傳回true或false。 傳回true時,則執行程式區段。若為false,則 跳過程式區段。 • 因此,判斷結構語法是靠條件式傳回的布林值, 做為程式區段是否被執行的依據。
流程控制 - 流程控制的用途與種類 • 迴圈控制語法如下所示: while (條件式){ 程式區段; …… } • 若程式敘述只有一行時,可省略{與}符號。
流程控制 - 流程控制的用途與種類 • 當while後的條件式傳回值為true時,則執行程 式區段,直到條件式傳回值為false時,才跳出 迴圈。 • 因此,當迴圈被執行時,一定會有改變條件式內,某變數的敘述,否則條件式的計算結果將永遠不會為false,也就無法跳出迴圈的控制。
流程控制 - if判斷敘述 • if判斷結構依照功能可以分為以下兩類: • 單一條件判斷敘述: 利用一條件式控制程式是否執行某程式敘述或 由兩程式敘述中擇一執行。此判斷敘述將利用 if或if…else…建立。 • 多條件判斷敘述: 利用多種條件控制程式所執行的敘述,此判斷 敘述將以if…else if...else…建立。
流程控制- if判斷敘述 單一條件判斷敘述 • 語法一:(控制單一程式敘述) if (條件式){ 程式敘述; …… }
流程控制- if判斷敘述 • 語法一其執行流程圖如下:
流程控制- if判斷敘述 • 語法二:(兩程式敘述擇一執行) if (條件式) { 程式敘述一; …...; } else { 程式敘述二; ……; }
流程控制- if判斷敘述 • 語法二其執行流程圖如下:
流程控制- if判斷敘述 多條件判斷敘述 • 當選擇執行程式的判斷條件不止一個時,就必須利用if…else if…else建立流程控制,語法如下: if (條件式A) { 程式敘述一; ……} else if (條件式B){ 程式敘述二; ……} else if …… …… else{ 程式敘述N; }
流程控制- if判斷敘述 • 上頁的語法,其執行流程圖如下:
流程控制- if判斷敘述 • 巢狀判斷敘述是一種可以達成與多條件判斷敘述 類似功能的判斷敘述。 • 當在判斷式的程式敘述中,又利用一個判斷敘述 進行判斷,此時便有兩層判斷敘述,這就是所謂 的巢狀判斷敘述。
流程控制- if判斷敘述 • 巢狀判斷敘述,如下所示: if (條件式A){ if (條件式B) 程式敘述一; else 程式敘述二; } else{ if (條件式C) 程式敘述三; else 程式敘述四; }