Conversion de type
-
Puisque Java est un langage fortement typé, la conversion de type est requise lors de l'exécution de certaines opérations
-
Faible ——————》 Élevé
-
octet , court , char–> int–> long–> float–> double
-
Dans l'opération, différents types de lignes de données sont convertis au même type, puis l'opération est effectuée
-
Conversion de type forcée
int a1 = 109;
byte b1 = (byte)a1;//强制转换 高转低需要强制转换,(类型)变量名
int a2 = 199;
byte b2 = (byte)a2;//内存溢出
double a3 = 4321.111;
long b3 = (long)a3;
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
109
-57
4321
- Conversion de type automatique
int c1 = 999;
long d1 = c1;//自动转换
int c2 = 999;
long d2 = (long)c2;//低容量转高容量会自动转换,不需要强制转换加(long)
999
999
- point important
- Impossible de convertir les valeurs booléennes
- Impossible de convertir le type d'objet en type non pertinent
- Lors de la conversion de haute capacité en faible capacité, conversion de force
- Il peut y avoir un débordement de mémoire ou des problèmes de précision lors de la conversion
System.out.println((int)12.5);//精度问题
System.out.println((byte)222);//内存溢出
System.out.println((long)3333.2);//精度问题
12
-34
3333
char c3 = '瓜';
int d3 = c3+1;
char c4 = '柯';
int d4 = c4+1;
System.out.println(d3);
System.out.println(d4);
System.out.println((char)d3);
System.out.println((char)d4);
29917
26608
瓝
柰
- Lorsque vous utilisez un plus grand nombre, faites attention au débordement
int money = 10_0000_0000;//jdk7之后数字之间可以用下划线分割
int year = 20;
System.out.println(money*year);//计算的时候溢出了
int total = money*year;
System.out.println(total);//计算的时候溢出了
long total2 = money*year;
System.out.println(total2);//默认是int,转换之前就出现问题了
long total3 = money*((long)year);
long total4 = ((long)money)*year;//先把一个数转化为long
System.out.println(total3);
System.out.println(total4);
-1474836480
-1474836480
-1474836480
20000000000
20000000000