《艾爾登法環》1.03版力信戰士Build推薦
阿新 • • 發佈:2022-03-24
- 不能對boolean型別進行型別轉換
- 不能把物件型別轉換成不相關類的物件
- 在把容量大的型別轉換為容量小的型別時必須使用強制型別轉換
- 轉換過程中可能導致溢位或損失精度
例如:
int i =128;
byte b = (byte)i;
/*輸出i的結果是-128。因為 byte 型別是 8 位,最大值為127,所以當 int 強制轉換為 byte 型別時,值 128 時候就會導致溢
出。*/
(int)23.7//== 23
(int)-45.89f// == -45
//浮點數到整數的轉換是通過捨棄小數得到,而不是四捨五入
1、自動型別轉換
自動型別轉換:容量小的資料型別可以自動轉換為容量大的資料型別。
例如: short資料型別的位數為16位,就可以自動轉換位數為32的int型別,同樣float資料型別的位數為
32,可以自動轉換為64位的double型別。
public class autochange{ public static void main(String[] args){ char c1='a';//定義一個char型別 int i1 = c1;//char自動型別轉換為int System.out.println("char自動型別轉換為int後的值等於"+i1); char c2 = 'A';//定義一個char型別 int i2 = c2+1;//char 型別和 int 型別計算 System.out.println("char型別和int計算後的值等於"+i2); } } /*c1 的值為字元 a ,查 ASCII 碼錶可知對應的 int 型別值為 97, A 對應值為 65,所以 i2=65+1=66。*/
2、強制型別轉換
強制型別轉換的語法格式:(type)var,運算子“()”中的type表示將值var想要轉換成的目標資料型別。
public static void main(String[] args) {
double x = 3.14;
int nx = (int)x; //值為3
char c = 'a';
int d = c+1;
System.out.println(d); //98
System.out.println((char)d); //b
}
操作比較大的數時,要留意是否溢位,尤其是整數操作時。
public static void main(String[] args) { int money = 1000000000; //10億 int years = 20; int total = money * years; //返回的是負數 long total1 = money * years; //返回的仍然是負數。預設是int,因此結果會轉成 int值,再轉成long。但是已經發生了資料丟失 long total2 = money * ((long) years); //先將一個因子變成long,整個表示式發 生提升。全部用long來計算。 System.out.println(total); System.out.println(total1); System.out.println(total2); }
3、JDK7擴充套件
JDK7新特性: 二進位制整數
由於我們在開發中也經常使用二進位制整數,因此JDK7為我們直接提供了二進位制整數的型別。
我們只要以:0b開頭即可。
int a = 0b0101;
JDK7新特性:下劃線分隔符
如果遇到特別長的數字,JDK7為我們提供了下劃線分隔符,可以按照自己的習慣進行分割。
int b = 1_2234_5678;//契合閱讀習慣