美文网首页
Java基础语法之类型转换

Java基础语法之类型转换

作者: Olivia_SHEN | 来源:发表于2017-09-06 19:46 被阅读0次

    1.默认转换


    实心箭头,表示无信息丢失,虚箭头,表示可能有精度损失。

    • 如果两个操作数中有一个是double,另一个会被转换成double
    • 否则,如果其中一个操作数是float,另一个操作数将会转换成float
    • 否则,如果其中一个操作数是long类型,另一个操作数将会转换为long类型
    • 否则,两个操作数都会被转换成int类型。

    2.强制转换

    • 强制转换通过截断小数点将浮点值转换成整型
    • 如果要四舍五入,要使用Math.round(9.97);,返回值是long。

    思考题:下面两个定义有没有区别

    float f1=(float)12.345;
    float f2=12.345f;
    

    有区别,f1是从double转换过来的,f2本身就是float类型。

    思考题

    byte b1=3,b2=4,b;
    1.b=b1+b2;
    2.b=3+4;
    

    1.报错,两个byte类型都会先转换成int,类型提升。
    2.常量,先计算值,然后看是否在byte范围里,如果在就不报错。
    变量在运行时才确定,而常量在编译时就确定

    思考题byte b=(byte)130,结果是多少?

    • 计算机中的数值计算都是通过补码进行的
      130 : 00000000 00000000 00000000 10000010
      这是130的原码,也是反码,还是补码。
      做byte截取,8位:10000010

    所以结果为-126

    补充知识

    • 原码:最高为符号位,0表示正数,1表示负数
    • 反码:正数的反码与原码相同,负数的反码符号位不变,数值位取反
    • 补码:正数的补码与原码相同,负数的补码为反码+1

    相关文章

      网友评论

          本文标题:Java基础语法之类型转换

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