Java Object.intValue()的奇怪行为
我正在努力解决一个问题,我不明白为什么它不起作用。如何通过Java Object.intValue()的奇怪行为,java,typing,autoboxing,Java,Typing,Autoboxing,我正在努力解决一个问题,我不明白为什么它不起作用。如何通过双obj传递变量并将其转换为int? 为什么它在上面的代码段中不起作用,但在下面的代码段中起作用 唯一的区别似乎是添加了一个额外的变量,该变量也被键入为double //Converting double to int using helper //This doesn't work- gets error message //Cannot invoke intValue() on the primitive type 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 doubleObj=new Double( doublehelpermethod);
由于取消装箱(将包装器类型转换为其等效的基元类型),这当然会起作用,但您所面临的问题是取消对doublehelpermethod
的引用
doublehelpermethod.intValue()
不可能,因为
doublehelpermethod
是一个基本类型变量,不能使用点关联,请参见 您在最上面的代码段中,试图将一个Double对象分配给这样的基元类型
double doubleObj=new Double( doublehelpermethod);
由于取消装箱(将包装器类型转换为其等效的基元类型),这当然会起作用,但您所面临的问题是取消对doublehelpermethod
的引用
doublehelpermethod.intValue()
不可能,因为doublehelpermethod
是一个基本类型变量,不能使用点关联,请参见 double
是一个基本类型,而double
是一个常规Java类。不能对基元类型调用方法。但是,intValue()
方法在Double
上可用,如中所示
更多关于这些基本类型的阅读可以在中找到double
是基本类型,而double
是常规Java类。不能对基元类型调用方法。但是,intValue()
方法在Double
上可用,如中所示
关于这些基本类型的更多阅读可以在这里找到只是有点吹毛求疵,但是您的变量名命名法应该是一致的。如果您要对变量名使用驼峰式大小写,请将其全部完成。混搭是个坏主意。另外,在变量名后面加上“helpermethod”一词可能会引起以后的混淆。这里有点吹毛求疵,但是变量名的命名应该是一致的。如果您要对变量名使用驼峰式大小写,请将其全部完成。混搭是个坏主意。另外,在变量名后面添加单词“helpermethod”可能会导致以后的混淆..好的-我知道了-那么我该如何让最上面的代码片段工作呢?我已经尝试过这个-System.out.println(“双精度值是:”+doubleObj.intValue());但这也不起作用,将赋值改为Double doubleObj=new Double(doublehelpermethod)代码>太棒了,我不敢相信我错过了首都!但是感谢罗宾对原因的精彩解释——真的很有启发性。好吧——我明白了——那么我该如何让顶级代码片段发挥作用呢?我已经尝试过这个-System.out.println(“双精度值是:”+doubleObj.intValue());但这也不起作用,将赋值改为Double doubleObj=new Double(doublehelpermethod)代码>太棒了,我不敢相信我错过了首都!但感谢罗宾对原因的精彩解释——真的很有启发性。