将Float转换为Int差异

时间:2016-04-24 01:19:15

标签: java object casting

我似乎无法弄清楚为什么我可以将float转换为int来执行以下操作:

float a = 3;
int b = (int)a;

但是当我尝试以下内容时:

public class MyTestCode{
    public static int Add(Object a, Object b){
        int c = (int)a;
        int d = (int)b;
        return c + d;
    }
}

...它出现以下错误:

*Exception in thread "main" java.lang.ClassCastException: java.lang.Float cannot be cast to java.lang.Integer
at myTestCode.MyTestCode.Add(MyTestCode.java:15)
at ch02.ex01.Ch02Ex01.main(Ch02Ex01.java:25)
Java Result: 1*

为什么我可以在一个示例中将float从float转换为int,而不是另一个示例?

1 个答案:

答案 0 :(得分:3)

这是因为在一种情况下,您有一个原始float,而在另一种情况下,您有一个java.lang.Float对象。要将该对象转换为float,这样的东西应该可以工作:

public static int add(Object a, Object b){
    float c = (Float)a;
    float d = (Float)b;
    return (int)(c + d);
}

首先回到原始浮点数应解决问题。