• Java类型转换


    转换规则

    • 八种基本数据类型当中除布尔类型之外的7种类型之间都可以互相转换
    • 小容量向大容量转换,称为自动类型转换,容量从小到大排序:
      byte < short < int < long < float < double < char
      注:任何浮点类型不管占用多少个字节,都比整数容量大。char和short可表示的种类数量相同,但是char可以取更大的正整数
    • 大容量转换为小容量,叫做强制类型转换,需要加强制类型转换符,程序才能编译通过,但是在运行阶段可能会损失精度,所以谨慎使用。
    • 当整数字面值没有超过byte,short,char的取值范围,可以直接赋值给byte,short,char类型的变量。
    • byte,short,,char混合运算的时候,各自先转换成int类型在做运算。
    • 多种数据类型混合运算,先转换成容量最大的那种在做运算。

    ①. Int a=10.8;//数据精度丢失警告。结果为10——自动类型转换

    ②. Int a=(int)10.8;//无警告。把10.8强制转换为整型——强制类型转换

    ③. Double c=10.6+6//结果为16.600000。即把6转为6.000000后再参与运算。

    在计算机中,拿两个数值进行运算,则运算符两边的数值需要类型相同,如果不同则进行自动类型提升。

    ④. 参与运算的两个数是什么类型,那么其结果就是什么类型。
    int a=10/3结果为3,double b=10/3结果为3.000000;
    double c=10.0/3结果为3.333333。要求精确值可以进行强制类型转换。
    double d=(double)3/2把3转换为double类型变为3.000000,之后2进行自动类型提升转变为2.000000参与运算,结果为1.500000。
    也可以写成3/(double)2。这种情况需要注意与对整体进行强制转换的区别 double e=(double)(3/2)是先计算3/2的值为1再对1进行强制类型转换,结果为1.000000。

    优先级问题:

    byte h = (byte)(int)g / 3
    // 先将g转换为int,又将int类型的g转换为byte类型,再运算g/3。运算后的结果为int类型,所以再赋值给byte类型的h时会出现精度损失的问题。
    正确的应该是:byte h = (byte)(int)(g / 3)

  • 相关阅读:
    1. 关于GCD的使用(串并行队列和同步异步函数的问题)
    陌院俅颗难炎先当粮澜
    openresty在centos/redhat6.7上部署
    tomcat 日志那点事
    Redhat6.7 切换Centos yum源
    Quartz corn时间表达式(转)
    Jquery控制滚动Div 滚动条事件
    fastjson排序 Map多层嵌套转换自动排序问题终极解决方案
    Spring 外部注入Bean (JAX-WS)
    SSH,如何恢复通过输入密码的方式来登录服务器
  • 原文地址:https://www.cnblogs.com/yu011/p/12632530.html
Copyright © 2020-2023  润新知