java - Object.intValue() 的奇怪行为

标签 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);

最佳答案

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

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

关于java - Object.intValue() 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8631652/

相关文章:

c# - 为什么 as 运算符可以与 Nullable<T> 一起使用?

java - 拆箱时如何检查泛型方法的返回类型以防止 NPE

java - 使用原始 double 值初始化 Double 对象

java - 等待价格完全加载的最佳方法(例如在比较网站上)

java - Android Studio 中具有多个库的最佳实践项目布局

Java:提取接口(interface)仅用于测试

java - 创建抽象方法而不固定其参数类型

java - Spring Security 获取登录值

python - 检查字段是否正在输入。可选

c++ - 通过比较扩展类型