我正在努力解决一个问题,我无法理解为什么它不起作用。如何通过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);
答案 0 :(得分:3)
double
是基本类型,而Double
是常规Java类。您无法在基本类型上调用方法。然而intValue()
方法可以使用Double
方法,如javadoc
可以找到关于这些原始类型的更多阅读here
答案 1 :(得分:1)
您位于顶部代码段,尝试将Double对象分配给这样的基本类型。
double doubleObj=new Double( doublehelpermethod);
当然会因为取消装箱(将包装类型转换为它的等效原始类型)而起作用,但您遇到的问题是解除引用doublehelpermethod
。
doublehelpermethod.intValue()
是不可能的,因为doublehelpermethod
是基本类型变量,并且无法使用点.
关联...请参阅... AutoBoxing