資料型態的轉換可分為「自動型態轉換」及「強制型態轉換」。
一、自動型態轉換
字元與整數可以使用自動型態轉換;整數與浮點數亦相容;
boolean 布林型態只能存放 true 或 false,因此與整數及字元不相容,不能轉換。
package ch03;
public class ch03_4_4 {
public static void main(String[] args) {
int a=45;
float b=2.3f;
System.out.println("a= "+a+" ,b= "+b);
System.out.println("a/b= "+(a/b));
}
}
OUTPUT:
a= 45 ,b= 2.3
a/b= 19.565218
二、強制型態轉換
強制型態轉換是直接撰寫在程式碼中,所以也稱為「顯性轉換」。
資料型態的強制性轉換語法:
package ch03;
public class ch03_4_5 {
public static void main(String[] args) {
int a=25;
int b=9;
System.out.println("a= "+a+ ",b= "+b);
System.out.println("a/b= "+a/b);
// 將a轉換成浮點數之後,再除以b
System.out.println("(float)a/b= "+(float)a/b);
}
}
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
我們先了解撰寫的基本架構:
import java.util.Scanner;
public class class_name //類別名稱
{
public static void main(String[] args)
{
Scanner 物件名稱=new Scnner (System.in); //宣告 Scanner 類別的變數
資料型態 變數名稱 a; //宣告變數
... ...
變數名稱=物件名稱.相對應型態的Scanner 類別函數; //讀入資料至變數
... ...
}
}
以下我們實例,並結合先前講到的print與println的差異:
package ch03;
import java.util.Scanner;
public class ch03_5 {
public static void main(String[] args) {
Scanner sc=new Scanner (System.in); //宣告 Scanner 類別的物件名為:sc
System.out.print("請輸入姓名");
String str; //宣告變數str
str=sc.nextLine(); //輸入字串,給str存放
System.out.println("歡迎 "+str);
}
}
OUTPUT:
請輸入姓名 4x // 斜線粗體為輸入的字串
歡迎 4x
常用的相對應型態之函數
四、Scanner 小技巧
輸入多項資料時,可以只宣告一個Scanner 類別的物件,再用Scanner 類別提供的成員函數,將鍵盤中輸入的資料指定給不同型態的變數存放,不需要宣告多個Scanner 類別物件。
如以下片段範例:
Ssanner scn=new Scanner(System.in); //宣告Scanner類別的物件
int i; //宣告整數變數
double d; //宣告倍精度浮點數
i=scn.nextInt(); //輸入整數數值,給i存放
d=scn.nextDouble(); //輸入倍精度浮點數數值,給d存放
五、next()與nextLine()
package ch03;
import java.util.Scanner;
public class ch03_5_2 {
public static void main(String[] args) {
Scanner scn=new Scanner (System.in); //宣告 Scanner 類別的物件名為:scn
String name;
int age;
System.out.print("請輸入姓名");
name=scn.nextLine(); //輸入字串,給name存放
System.out.print("請輸入年齡");
age=scn.nextInt(); //輸入整數,給age存放
System.out.print("歡迎, "+name+", 您目前 ");
System.out.println(age+" 歲。");
}
}
OUTPUT:
請輸入姓名scheng // 斜線粗體為輸入的字串
請輸入年齡19
歡迎, scheng, 您目前 19 歲。
六、charAt()
package ch03;
import java.util.Scanner;
public class ch03_5_3 {
public static void main(String[] args) {
Scanner scn=new Scanner (System.in); //宣告 Scanner 類別的物件名為:scn
System.out.print("請輸入姓名");
String str; //宣告變數str
str=scn.nextLine(); //輸入字串,給str存放
char ch;
ch=str.charAt(2); //取出字串第2個字元
System.out.print(ch); //印出第二個字元
}
}
OUTPUT:
請輸入姓名scheng // 斜線粗體為輸入的字串
h //第0個字元為 ‘s’ ;第1個字元為 ‘c’ 以此類推。