0

我正在努力解决一个问题,我不明白为什么它不起作用。如何通过变量传递double obj并转换为int
为什么它在顶部代码片段中不起作用,但它在该行下方的底部代码片段中起作用?

唯一的区别似乎是添加了一个额外的变量,它也被键入为double?

//Converting double to int using helper

//This doesn't work- gets error message
//Cannot invoke intValue() on the primitive type double

double doublehelpermethod = 123.65;
double doubleObj = new Double( doublehelpermethod);
System.out.println("The double value is: "+ doublehelpermethod.intValue());
//--------------------------------------------------------------------------
//but this works! Why?

Double d = new Double(123.65);
System.out.println("The double object is: "+ doubleObj);
4

2 回答 2

3

double是原始类型,而是Double常规 Java 类。您不能在原始类型上调用方法。但是,该intValue()方法在 上可用Double,如javadoc中所示

可以在此处找到有关这些原始类型的更多阅读

于 2011-12-25T21:34:13.490 回答
1

您在顶部片段中,试图将 Double 对象分配给这样的原始类型。

double doubleObj=new Double( doublehelpermethod);

这当然会因为取消装箱(将包装器类型转换为其等效的原始类型)而起作用,但是您面临的问题是取消引用doublehelpermethod.

doublehelpermethod.intValue()

不可能,因为doublehelpermethod它是一个原始类型变量,不能使用点关联.请参阅... AutoBoxing

于 2011-12-25T21:29:42.167 回答