Jour 8 (conversion de type, conversion forcée, conversion automatique)

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
    1. Impossible de convertir les valeurs booléennes
    2. Impossible de convertir le type d'objet en type non pertinent
    3. Lors de la conversion de haute capacité en faible capacité, conversion de force
    4. 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

Je suppose que tu aimes

Origine blog.csdn.net/SuperrWatermelon/article/details/112458387
conseillé
Classement