變數、資料型態、運算子
本章重點1 變數的意義 變數的宣告與應用 常數 常數的宣告與應用 變數命名注意事項 資料型態 字元資料型態 使用跳脫字元 位元資料型態 整數資料型態 浮點數資料型態 布林資料型態
本章重點2 從鍵盤輸入資料 輸入字串 輸入數字 運算式與運算子 算術運算子 指定運算子 比較關係運算子 邏輯運算子 遞增遞減運算子 位元運算子 資料型態的轉換 - 直接型態轉換 - 強制型態轉換
變數的意義 變數?什麼是變數?是否為會變的資料值?是的,變數就是會變動的資料值。它將隨著程式的執行演變,可能所產生不同結果的資料值。
變數的意義 例如,銀行存款餘額將隨著存款、提款或轉帳後會產生不同餘額資料值。
變數的意義 電腦收到相關資料值時,會將這些資料值記錄下來並且存放在特定的位置,以便將來可以方便取用。 所謂的「存放在特定的位置」是指電腦的「記憶體(memory)」,當需要使用變數資料值時,經過正確的變數宣告後,系統就會在記憶體區間配置一個空間給這個變數資料值使用。
變數的意義 記憶體區間可將之比喻為多個置物存放格,而「變數」就是指定暫時存放在格子內,當需要使用時,再從這個指定的位置提取。「變數」儲存在記憶體內的可以是數值或資料
變數的宣告與應用 因為記憶體是提供資料暫時存放的地方,那麼問題是?要如何去存取呢?記憶體皆有自己的位址,我們也無法指定記憶體區塊要存放什麼值,但我們可以利用宣告方式來取得一個記憶體區塊,此時給予一個適當名稱,再將資料值設定到這個記憶體區塊,當我們在撰寫程式時,就使用這個名稱來代表這個記憶體位址所儲存的資料值
變數宣告的語法格式
常數 常數與變數又有何差異?假如在校考試成績為90分,「90」這個分數是定值不可更改的,這即是常數。行不改名,坐不改姓,我們每個人皆有名字,這也是常數。那生辰八字也是常數。所以,簡單地說,「常數」就是恆久不可改變的資料質。 常數的標準定義是,通常變數的資料值是可以更改的,但是在某些情況下,會希望這個變數的資料值不能更改,這就是我們所說的「常數」。
常數的宣告與應用 在Java程式中,使用「final」修飾字定義常數之宣告,一旦宣告後,就不能再改變其設定值。常數宣告方式與變數無太大差別,只要在資料型態之前加註「final」。
變數命名注意事項 變數名稱不可為關鍵字或保留字。例如,new、class、true、flase等
變數命名注意事項 合法的宣告變數名稱。變數名稱的第一個字元為Unicode字元、英文字母、底線(_)符號皆可,但是不可使用數字(0~9)當作為第一個字元,如在第二個字元以後可以使用數字。 使用有代表意義的變數名稱。盡量使用具有代表意義的文字宣告, 例如,宣告「總金額」的變數名稱可以命名為amount,宣告「利息所得」則可以命名為interestEarned。
變數命名注意事項 注意變數名稱的大小寫。在Java程式中,變數名稱是有分大小寫的,例如,time, Time, TIME這三者對Java程式皆代表著不同意義。 不能重複宣告同一變數名稱。在同一Java程式中,如有重複宣告同一變數名稱,將會產生錯誤訊息。
資料型態 資料型態的主要功能是用來指定變數所儲存的資料,隨著資料所佔的記憶體空間不同需要,資料型態也會有所不同,可能是由一個字元(char)、整數(int)、浮點數(float / double)或布林值(boolean)所成。而且決定使用何者指定變數所儲存的資料後,就不能更改其資料型態的資料。
字元資料型態 Java使用16-bits的Unicode來表示所有字元。所謂Unicode就是萬用碼,為了能讓全世界所有文字符號皆能表示出來,故有了Unicode(萬用碼)的產生,其目的是能讓電腦透過標準字元溝通。Unicode的每個字元在記憶體空間佔用 2 bytes(16 bits),所以可以表現65536個(=216)字元。
字元資料型態 每個字元用以辨識不同的物件,可以使用下列分類來表示: 大寫的英文字母,如A, B, C, …, X, Y, Z 阿拉伯數字,如0, 1, 2, 3, 4, 5, 6, 7, 8, 9 標點符號,如,。、:;!? 在Java程式中,單一字元的宣告是使用char,並將指定之文字加上單引號來表示之(’ ‘)。注意,兩個字元以上(如 aa),那就不是單一字元的宣告,而是『字串』宣告
跳脫字元 使用字元時,可能有一些特殊文字無法由鍵盤輸入來表示,為了表達這些文字,可以使用反斜線「\」的方式,再搭配一些文字使用,即可達到目的, 像這樣的文字表示法,我們稱為『跳脫字元』。
跳脫字元
位元資料型態 位元資料型態使用『byte』來宣告變數,通常位元資料型態初始值預設為0。位元資料型態也可說是整數型態類型的一種,它的範圍介於 -128 ~ 127之間, 僅佔用1個位元組的記憶體空間。 如果宣告變數時,而這個值要是不大,例如考試分數,因為考試成績介於0 ~ 100之間,必要時,可以使用byte資料型態來省下記憶體空間。
整數資料型態 整數型別用於宣告需要儲存資料型別為整數的變數,它沒有小數點,例如:8、747、2345…等整數的資料值,它可以是負數的宣告,例如是數量的減少,比如數值少了300,型態可用 -300來表示。 隨著宣告數值的大小,整數資料型態中,從小而大可分為short、int、long等三種。short佔記憶體空間2個位元組;int佔記憶體空間4個位元組;long佔記憶體空間8個位元組。
浮點數資料型態 浮點數即表示帶有小數點的資料值,Java支援二種浮點數資料型態,例如簡單的加減乘除運算,是為float資料型態,宣告此浮點數資料型態的變數時,必須要在數值後面加上f或F做轉換的動作,表示方式如:4.69f 或 4.69F。另一種通常是用在科學工程計算,是為double資料型態,此浮點數資料型態亦是為Java有使用小數點的預設資料型態
布林資料型態 在Java程式中,布林資料型態(Boolean)只有兩個結果,亦即「真」與「假」,絕對沒有第三種其他答案出現,其中「真」以true表示,「假」以false表示。 布林資料型態常扮演著作判斷決定的角色 當事件合理及條件成立為真(true)時,則進行相關指定動作;反之,若事件不合理且條件不成立則為假(false)。
從鍵盤輸入資料 要能夠達成從鍵盤輸入變數資料值目的,我們首先必須先瞭解程式內容才行,程式內容如下所示:
範例檔: Ch3_13.java
輸出結果
輸入數字 由於鍵盤所輸入的字元,即使是輸入數字0~9,都將被視為「文字」,而不是數字喔,所以我們必須將文字轉換成數值型態,如整數或浮點數。只要多加一行程式即可完成,就是下列這一行: int num = Integer.parseInt(str);
運算式與運算子 在Java程式設計中,通常會有數值的運算,並利用特定的操作執行,來求得新值,我們可以把這一整個處理過程叫做「運算式」。
運算式與運算子 Java的運算式是由2個元件所組成: 運算子(operator):就是數學常用的運算符號,如加減乘除等符號 運算元(operand):指執行的對象,可以是變數、常數所構成
算術運算子 用於算術運算的運算符號,稱為『算術運算子』,共有5個,列表如下
指定運算子 指定運算子是用「=」符號表示, 要注意的事是,這個「=」符號可 不是「等於」,而是「指定」的意思。其目的是要將右邊數值或運算結果的值指定給左邊的變數名稱。 例如: sum = x + y; average = 89.6; C = 2 *(a + b);
複合指定運算子 比較常用的複合指定運算子列表如下
比較關係運算子 關係運算子是用來比較兩個運算元之間大小的關係,關係運算子經過運算的結果只有兩種結果,那就是「true真」或是「false假」,如果比較關係成立,會傳回「true真」,反之,若比較關係不成立,則會傳回「false假」。例如,我們都知道數值6大過於數值3,可用6 > 3來表示就會傳回「true」,如果我們寫成3 > 6,因為不成立,其值就會傳回「false」。
關係運算子 Java中主要常見的關係運算子
邏輯運算子 當我們必須要考慮兩個條件以上做為判斷依據時,就必須透過邏輯運算子來處理最後的結果。邏輯運算子與上述的關係運算子皆有一個共同點,兩者的運算結果都是「布林值」,即為「true真」或是「false假」兩種結果。所以邏輯運算式的運算元也必須是布林值的資料型態。
邏輯運算子 常用的邏輯運算子如下
邏輯運算子 邏輯運算子中的 && 兩個運算元值都必須是true,結果才會是true,若其中有一個運算元值,結果則為false,因為 && 的條件須兩邊同時成立,只要判斷一方有false時,其結果就是false。然而在 | | 的邏輯運算子,只要有一方是true,則結果為true,當然,兩者皆為false時,其結果自然是false。
遞增遞減運算子 遞增遞減運算子用最簡單的說法就是將變數加1或減1之後,再將新值指定給原變數使用。我們會用 ++ 表示遞增運算子,-- 則代表遞減運算子。 假設有變數a若需要加1遞增或減1遞減,通常會寫成: a = a + 1 或 a += 1 或 a = a - 1 或 a -= 1 遞增運算子就簡化成下列型式表示: a++ 或 a--
遞增遞減運算子 遞增遞減運算子置於變數之後,如a++ 及 a--,我們稱之為「後置式」,反之,若遞增遞減運算子置於變數之前,如++a 及 --a,我們稱為「前置式」。
位元運算子 位元(bit)是電腦運算的最基本單位,Java位元運算通常應用在整數資料型式,這些資料型別的資料是用二進位來表示,每個位元運算結果不是0就是1,也就是說,電腦只能讀取0與1來進行運算,一般我們對整數資料皆以十進位來計算,所以在這裏必須要瞭解如何將十進位轉換成二進位的換算,才能有助於對位元運算子的應用。
十進位 十進位就是到10就進位,數值只有 0 ~ 9 的數字符號,不過這些數字符號並沒有10的符號出現。十進位的標示方式會在數值後面加上一個下標數字10,例如:27810 、8910。
二進位 二進位就是到2就進位,數值只有 0或1 兩個數字符號組成,絕對不會有2的符號出現。二進位的標示方式會在數值後面加上一個下標數字2, 例如:100112 、101012。
資料型態的轉換 在前個單元說明了不同的資料型別,例如整數、浮點數,字元等。例如 我們指定一個整數資料型態,那這個變數就是整數資料型態。但是在有些時候, 我們會希望將整數轉換成浮點數,在Java中是否允許資料型態轉換呢?答案是可以的。將一種資料型態轉換成另一種資料型態,就稱為資料型態的轉換
資料型態的轉換 可分為「直接型態轉換」與「強制型態轉換」兩種 直接型態轉換 將整數轉換成浮點數 將浮點數轉換成整數 強制型態轉換 強制型態轉換意謂著使用強制方式令其資料 型態改變,例如上例中將浮點數轉換成整數
課堂練習
課堂練習 1:算術四則運算 此練習題是算術四則運算加、減、乘、除應用,要注意的是在兩數整除之後,所產生不同的輸出結果,原因在於資料型態的設定,輸出結果參考之畫面如下:
課堂練習2:接受輸入值運算 要是將工作每小時薪資定為$350元,設計一個可由鍵盤輸入時數後,可自動算出全部工資所得,參考畫面如下:
課堂練習3:布林真假值運算 請練習從下列程式碼分別自行判斷a & b、a | b、a ^ b及!a輸出值是真或假,練習題輸出結果之畫面
課堂練習4:求得帳戶最後之餘額 假設目前帳戶餘額有10,000元,試著在存款5,000元, 然後提款 7,000元,最後再轉帳2,000元,試寫出一Java程式可進行輸入金額之運算,參考畫面如下 :
The End