使用者反饋稱,Win11 會觸發部分遊戲反作弊致使誤封
阿新 • • 發佈:2021-07-05
自動轉換
自動轉換按從低到高的順序轉換。
不同型別資料間的優先關係如下: 低--------------------------------------------->高
byte,short,char-> int -> long -> float -> double
運算中,不同型別的資料先轉化為同一型別,然後進行運算,轉換規則如下:
運算元1型別 | 運算元2型別 | 轉換後的型別 |
---|---|---|
byte、short、char | int | int |
byte、short、char、int | long | long |
byte、short、char、int、long | float |
float |
byte、short、char、int、long、float | double | double |
強制轉換
強制轉換的格式是在需要轉型的資料前加上“( )”,然後在括號內加入需要轉化的資料型別。有的資料經過轉型運算後,精度會丟失,而有的會更加精確,下面的例子可以說明這個問題。
public static void main(String[] args){
int x;
double y;
x = (int)34.56 + (int)11.2; // 丟失精度
y = (double)x + (double)10 + 1; // 提高精度
System.out.println("x=" + x);
System.out.println("y=" + y);
}
public static void main(String[] args) {
int i = 128;
byte b = (byte)i;
double dou = i;
//強制型別轉換:(型別)變數名 高轉到低
//自動型別轉換 由低轉換到高,會自動轉換,不需要做特殊操作
/*
注意:
1.布林型別的資料是不能進行型別轉換的
2.不能把物件型別轉換為不相干的型別
3.在進行高容量轉換成低容量時,需要進行強制轉換
4.轉換的時候可以會存在記憶體溢位,或者精度問題
*/
}
public static void main(String[] args) {
//操作比較大的時候,注意溢位問題
//數字之間可以用下劃線分割
int money = 10_0000_0000;
int years = 20;
int total = money*years;
System.out.println(total);//-1474836480
long total2 = money*years;//-1474836480 預設是int 轉換之前就已經存在問題了
System.out.println(total2);
long total3 = money*((long)years);//此時在轉換之前就全是是long資料型別了,就算結果就不會出現錯誤
System.out.println(total3);
}
public static void main(String[] args) {
//操作比較大的時候,注意溢位問題
//數字之間可以用下劃線分割
int money = 10_0000_0000;
int years = 20;
int total = money*years;
System.out.println(total);//-1474836480
long total2 = money*years;//-1474836480 預設是int 轉換之前就已經存在問題了
System.out.println(total2);
long total3 = money*((long)years);//此時在轉換之前就全是是long資料型別了,就算結果就不會出現錯誤
System.out.println(total3);
}