【发布时间】:2015-02-12 02:48:06
【问题描述】:
好的,如果我有这个代码
double a=1.5;
int b=(int)a;
System.out.println(b);
一切正常,但是
Object a=1.5;
int b=(int)a;
System.out.println(b);
运行后报如下错误(Eclipse没有报错)
java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Integer
但是,当我这样做时
Object a=1.5;
double b=(double)a;
int c=(int)b;
System.out.println(c);
或
Object a=1.5;
int b=(int)(double)a;
System.out.println(b);
什么都没有了。
为什么必须先将其转换为double?
【问题讨论】:
-
我很困惑为什么你的
Object a=1.5; double b=(double)a;工作它会为 java.lang.Double 类而不是原始 double 工作。在我的日食中,您的工作部分不起作用,但这有效:double b=(Double)a; -
好吧,开始你自己的话题吧 ;)