資料型態的轉換
資料型態的轉換可分為「自動型態轉換」及「強制型態轉換」。
一、自動型態轉換
轉換前的資料型態與轉換後的型態相容
轉換後的資料型態之表示範圍比轉換前的型態大
型態的轉換只限該行敘述,不影響原先變數的型態定義
保證資料的精確度
這種轉換方式稱為「擴大轉換」
字元與整數可以使用自動型態轉換;整數與浮點數亦相容;
boolean 布林型態只能存放 true 或 false,因此與整數及字元不相容,不能轉換。
OUTPUT: a= 45 ,b= 2.3 a/b= 19.565218
當兩個數值中有一個為浮點數時,運算結果會直接轉換為浮點數。
當運算式中變數的型態不同時,會自動把較少的表示範圍轉換成較大的表示範圍後再做運算。
二、強制型態轉換
強制型態轉換是直接撰寫在程式碼中,所以也稱為「顯性轉換」。
資料型態的強制性轉換語法:
OUTPUT: a= 25,b= 9 a/b= 2 (float)a/b= 2.7777777
除了 (float)a/b 的寫法之外,以下兩種寫法也成立:
(1) a / (float) b //將整數b強制轉換成浮點數,再以整數a除之。
(2) (float) a / (float) b //將整數a,b 同時強制轉換成浮點數後運算。
若是將一個能表示較大範圍之資料型態的變數,設給範圍較小之資料型態的變數時,稱為「縮小轉換」。
在縮小轉換的過程可能會漏失資料的準確性。
三、由鍵盤輸入資料 Scanner
我們先了解撰寫的基本架構:
以下我們實例,並結合先前講到的print與println的差異:
OUTPUT: 請輸入姓名 4x // 斜線粗體為輸入的字串 歡迎 4x
在使用Scanner 類別時,我們必須先建立Scanner 類別的物件,再利用所建立的物件呼叫相對應的函數。
常用的相對應型態之函數
資料型態 | 相對應的函數 | 資料型態 | 相對應的函數 |
byte | nextByte() | float | nextFloat() |
short | nextShort() | double | nextDouble() |
int | nextInt() | String | next() |
long | nextLong() | nextLine() |
四、Scanner 小技巧
輸入多項資料時,可以只宣告一個Scanner 類別的物件,再用Scanner 類別提供的成員函數,將鍵盤中輸入的資料指定給不同型態的變數存放,不需要宣告多個Scanner 類別物件。 如以下片段範例:
五、next()與nextLine()
在輸入字串時,可以使用 next() 或 nextLine() 函數,由於Scanner 物件遇到空白字元即會傳回空白字元之前的資料,因此若是字串中不確定會帶有空白字元的情況下,建議使用 nextLine(),反則輸入的資料將被截斷
OUTPUT: 請輸入姓名scheng // 斜線粗體為輸入的字串 請輸入年齡19 歡迎, scheng, 您目前 19 歲。
六、charAt()
Scanner類別並沒有提供字元輸入相對應型態的函數,可以利用 next() 取得字串後,再利用 charAt(0) 取出字串中第0個字元即可得到字元。
OUTPUT: 請輸入姓名scheng // 斜線粗體為輸入的字串 h //第0個字元為 ‘s’ ;第1個字元為 ‘c’ 以此類推。
Last updated