zoukankan      html  css  js  c++  java
  • Java基本数据类型之间转换

    一、自动类型转换

    转换的过程自动发生
    规则:小——>大
    byte->short->int->long->float->double
    char类型识别为int,可以转成int,不可自动转成byte、short 

    二、强制类型转换

    转换的过程强制发生

    规则:大——>小

    语法:类型 变量名 = (类型)值;

    自增/自减运算符、复合赋值运算符底层做了优化,内部自动强制类型转换,如:++,--,*=,/=,+=,-=……

    int i = 10;
    short s = 5;
    i = s;              // 正确,自动转换
    s = i;              // 报错,精度丢失,需要强制转换
    long l3 = 1000.9f;  // 报错,小数转为整数,精度丢失,需要强制转换
    
    double d = 1.5f;    // 正确,1.5f识别为float类型,自动转换
    float f1 = 100L;    // 正确,整数部分可以直接赋值给float整数部分,自动转换
    float f2 = 100.9;   // 报错,100.9默认识别为double,这样转换可能失去小数点,必须强制转换
    
    short s1 = 5;
    s1 = s1 - 2;         // 报错,2被识别为int,损失精度
    byte b = 2;
    s1 = s1 - b;         // 报错,char、byte和short运算、比较时以int存储(为了保证不发生溢出现象),赋值损失精度
    b = b + 4;           // 同理,报错
    
    //没报错的原因:
    //编译时候,进行检查,看赋值大小是否超过变量的类型所容纳的范围
    //如果超过,报错:从int转换到byte可能会有损失,如果没超过,编译通过
    byte b1 = 120;
    byte b2 = 128;      // 报错,超过存储范围
    
    char c1 = 'a';
    int i1 = c1;        // 正确,自动转换
    
    int i2 = 100;
    char c2 = i2;       // 错误: 不兼容的类型: 从int转换到char可能会有损失
    int  n = 100;
    char c3 = (char)n;  // 正确,强制转换
    
    int m = 12.5*8+2.5*4;         // 错误,float到int损失精度
    int m2 = (int)(12.5*8+2.5*4); // 正确,加括号保证优先级

    int a = 100;
    a *= 0.5;       // 正确,等价于a=(int)(a*0.5),直接进行强制转换
    byte b3 = 10;
    b3++;         // 正确,等价于b3=(byte)(b3+10)

    【注意】

    • 遵循自动提升原则,表达式的结果类型 遵循操作数中最大的类型
    • 强转符号只针对于最近的操作数有效,往往需要通过小括号提升优先级
    • byte、short运算时充当int类型
    • char类型只能直接存储int的常量值(char取值范围内)不是变量值(大到小损失精度)
    • char 可以当做一种特殊的整数类型
    • java中整数类型默认的int类型;小数类型默认的double
    • int无法转换为boolean
    • 小数类型转为整数类型,小数可能被舍弃,所有出现精度损失,所以需要强制转换
    • boolean 类型不能转换成任何其它数据类型
  • 相关阅读:
    jquery,字符串转json对象,json对象转字符串
    Oracle,跳出游标循环
    oracle常用函数使用大全 Oracle除法(转)
    Oracle 数字操作。数字函数。mod(),trunc(),round(),ceil(),floor的使用
    Oracle 和sqlserver 字符串补齐
    js中数组的splice()方法
    详解JavaScript的splice()方法
    使用GDB命令行调试器调试C/C++程序
    代码为什么需要重构
    Spring事务管理要点总结
  • 原文地址:https://www.cnblogs.com/MWCloud/p/11162192.html
Copyright © 2011-2022 走看看