【问题标题】:How Type Casting Works in java?java中的类型转换是如何工作的?
【发布时间】:2013-10-25 19:15:23
【问题描述】:
  1. 为什么 c 的值是 2.0 和 2.5,尽管它们具有相同的数据类型
  2. a/b 中的转换是如何发生的

    public static void main(String[] args) 
            {
                int a = 5,b=2;
                float c;
                c=a/b;
                System.out.println(c);
                c=(float)a/b;
                System.out.println(c);
            }
    

【问题讨论】:

  • 欢迎回来整数除法
  • a 是一个整数,b 是一个整数,所以没有显式转换,结果也将是一个整数
  • 请务必注意,类型转换优先于 / 运算符,因此 (float)a/b((float)a)/b 相同。如果你写了(float)(a/b),你仍然会得到2.0

标签: java casting int implicit-conversion explicit


【解决方案1】:

答案在于理解尽管将c 声明为float,但整数除法仍会在a/b 中进行。 Java 中的整数除法会截断任何小数部分(因此它可以保持为int)。只有这样,它才会在分配给c 时隐式转换为float,并打印2.0

(float)a/b 中转换为float 会将a 更改为5.0f 并在结果分配给c 之前强制进行浮点除法,因此会打印正确的结果2.5

【讨论】:

    【解决方案2】:

    在第一条语句中,计算了a/b。由于两个变量都是整数,因此结果也是整数:2。在您的第二个语句中,a 首先转换为float,然后除以b。由于其中一个值是 float,因此结果也是 float2.5

    【讨论】:

      【解决方案3】:

      第一个除法是 int / int --> int 结果。 第二个是Float / int,--> Float结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-24
        • 2020-11-07
        • 2018-01-09
        • 1970-01-01
        相关资源
        最近更新 更多