Object.intValue()的奇怪行为

时间:2011-12-25 21:23:12

标签: java typing autoboxing

我正在努力解决一个问题,我无法理解为什么它不起作用。如何通过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);

2 个答案:

答案 0 :(得分:3)

double是基本类型,而Double是常规Java类。您无法在基本类型上调用方法。然而intValue()方法可以使用Double方法,如javadoc

所示

可以找到关于这些原始类型的更多阅读here

答案 1 :(得分:1)

您位于顶部代码段,尝试将Double对象分配给这样的基本类型。

double doubleObj=new Double( doublehelpermethod);

当然会因为取消装箱(将包装类型转换为它的等效原始类型)而起作用,但您遇到的问题是解除引用doublehelpermethod

doublehelpermethod.intValue()

是不可能的,因为doublehelpermethod是基本类型变量,并且无法使用点.关联...请参阅... AutoBoxing