美文网首页
Java - 类型转换

Java - 类型转换

作者: A一土彳曰于丶金金金 | 来源:发表于2021-08-22 00:45 被阅读0次

    由于Java是最强类型语言,所以要进行有些运算的时候,需要用到类型转换

    容量列表
    低 -----------------> 高
    byte,short,char --> int --> long --> float --> double

    运算中,不同类型的数据先转换为同一类型,然后再进行运算

    强制类型转换:从高到低,需要强制转换
    格式:(类型) 变量;

    // 强制转换例子
    int i = 127;
    System.out.println(i);     // 输出 127
    byte i2 = (byte) i;
    System.out.println(i2);     // 输出 127
    

    要强制转换的类型值不能超过最大值,若超过最大值,则内存溢出

    自由转换类型:从低到高,不需要转换

    // 自由转换例子
    int i = 127;
    System.out.println(i);     // 输出 127
    double i2 = i;
    System.out.println(i2);     // 输出 127.0
    

    强制类型转换可能存在精度问题

    // 强制类型转换的精度问题
    System.out.println((int)23.7);     // 输出 23
    System.out.println((int)-45.89f);  // 输出 -45
    

    char的强制转换

    char i = 'a';
    int i1 = i + 1;
    System.out.println(i);     // 输出 a
    System.out.println((char)i1);  // 输出 b
    

    注意点

    • 不能对布尔值转换
    • 不能把对象类型转换为不相干的类型
    • 在把高容量转换低容量的时候,需要强制转换
    • 转换的时候,可能存在内存泄漏、精度的问题

    操作比较大的数的时候,注意溢出问题
    可以是使用JKD7的新特性,数字之间用下划线分割,下划线并不会被输出

    int money = 10_0000_0000;
    System.out.println(money);   // 输出 1000000000
    

    计算溢出

    int money = 10_0000_0000;
    int years = 20;
    int total = money * years;
    System.out.println(total);    // 输出 -1474836480,计算的时候已经溢出了
    long total2 = money * years;
    System.out.println(total2);   // 输出 -1474836480,转换完默认是int,转换之前已经存在问题了
    
    //正确写法,先把一个数转换为long,再进行计算
    long total3 = money * ((long) years);
    System.out.println(total2);   // 输出 20000000000
    

    先把一个数转换为long,再进行计算

    相关文章

      网友评论

          本文标题:Java - 类型转换

          本文链接:https://www.haomeiwen.com/subject/rzwxiltx.html