資料型態的轉換
資料型態的轉換可分為「自動型態轉換」及「強制型態轉換」。
一、自動型態轉換
轉換前的資料型態與轉換後的型態相容
轉換後的資料型態之表示範圍比轉換前的型態大
型態的轉換只限該行敘述,不影響原先變數的型態定義
保證資料的精確度
這種轉換方式稱為「擴大轉換」
字元與整數可以使用自動型態轉換;整數與浮點數亦相容;
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