資料型態的轉換方式
自動轉型
Java會自動將空間小的型態轉成空間大的型態
如:整數(int)->浮點數(float或double),字元(char)->整數(int)
自動轉型的順序:
byte -> short -> char -> int -> long -> float -> double
boolean不是數值型態,所以無法跟上面這些數值型態做轉換
char比較特別因為可以找到對應的Unicode代碼值
//整數轉浮點
int a = 3;
double b = a;
float f = a;
System.out.println("a = "+a);
System.out.println("b = "+b);
System.out.println("f = "+f);
//字元轉整數
char c = 'i';
a = c;
System.out.println("a = "+a);
輸出結果:
a = 3
b = 3.0
f = 3.0
x = 105
(i這個字元對應到unicode的值)
強制轉型
如要將空間大的型態轉小空間型態,則必須使用強制轉型,否則IDE會報錯,此外大轉小可能造成會遺失部分資料或是錯誤
double b = 123.456;
int a = b; //未強制轉型,此時IDE會報錯
正確為
double b = 123.456;
int a = (int)b; //用(型態)強制將變數b轉型
System.out.println("a = " + a);
int i = 19954;
byte c = (byte)i;
System.out.println("c = " + c);
輸出結果:
a = 123
浮點轉整數會無條件捨去至整數位
c = -14
byte的數值範圍-128~127
強制將超過此範圍的i轉成byte,所以印出來的值會是錯的