risc-v中文社区

 找回密码
 立即注册
查看: 917|回复: 0

[原创] java for risc-v系列知识讲座(2)---自然转换和强制转换的区别

[复制链接]

20

主题

23

帖子

96

积分

注册会员

Rank: 2

积分
96
发表于 2021-7-29 11:41:44 | 显示全部楼层 |阅读模式
本帖最后由 szy 于 2021-7-29 16:58 编辑

两种转换之间的区别请看下面代码:
public class convert {
    public static void main(String[] args)
    {
        int a = 50;
        int b = 9;
        float c,d,e,f;
        System.out.println("a="+a+",b="+b);
        c = a/b; //a/b是整数除,本来结果应该是5,但因为c是float,所以结果就是5.0
        System.out.println("a/b="+c);
        System.out.println("a="+a+",b="+b);
        d=(float)a/b; //可能写代码的人的原本的想法是a/b,然后再强转为float,可实际上是先将int a强转为float(因为运算符“(float)”的优先级是最高的),所以就变成了5.0 float,然后再/ int b,但java会将int b转换为float,然后再两个float相除,所以结果 d=5.5555553
        System.out.println("d="+d);

        e=(float)(a/b);//先整数除,只是人为再强转为float,这与前面的c自动转为float无区别
        System.out.println("e="+e);

        f=(float)a / (float)b;//已经人为先将a和b强转为float了,然后再两个float相除,结果当然和d一样
        System.out.println("f="+f);
    }
}



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



Archiver|手机版|小黑屋|risc-v中文社区

GMT+8, 2024-4-27 14:36 , Processed in 0.015407 second(s), 18 queries .

risc-v中文社区论坛 官方网站

Copyright © 2018-2021, risc-v open source

快速回复 返回顶部 返回列表