根据 Oracle 的说法,我应该能够将 和 之类的方法.intValue()
应用于.compareTo()
双精度,但是当我在 NetBeans 中编写dbl.toString()
时,例如,IDE 告诉我不能取消引用双精度。我什至不能将它们转换为形式的整数(Integer) dbl
!
我有 JDK 1.6 和 NetBeans 6.9.1。这里有什么问题?
问问题
295 次
6 回答
2
您提到的方法可以在 Double 类中找到(而不是在 double 原始类型中)。使用原始类型总是更有效,但如果您绝对需要这些方法,请创建一个新的 Double 对象,如下所示:
double d = 10.0;
Double myDouble = new Double(d);
于 2010-12-29T21:23:41.520 回答
1
问题是您对对象与原语的理解。
最重要的是,您只需要认识到大写的名称是像原语一样的对象类,只有当您需要将数据从原语发送到只接受对象的方法时才真正需要。您的转换失败是因为您试图将原始(双精度)转换为对象(整数)而不是另一个原始(整数)。
以下是一些使用原语与对象的示例:
Double 类有一个静态方法 toString():
double d = 10.0;
// wrong
System.out.println(d.toString());
// instead do this
System.out.println(Double.toString(d));
其他方法可以直接使用运算符而不是调用方法。
double a = 10.0, b = 5.0;
// wrong
if( a.compareTo(b) > 0 ) { /* ... */ }
// instead you can simply do this:
if( a >= b) { /* ... */ }
int a = 0;
double b = 10.0;
// wrong
a = b.intValue();
// perform the cast directly.
a = (int)b;
于 2010-12-29T21:59:04.497 回答
0
double 是原语而不是对象。因此它没有方法。通常,您想要做的是使用类似的语言。
double d = 1.1;
System.out.println("d= "+d); // calls Double.toString(d) for you.
int i = (int) d; // more efficient than new Double(d).intValue();
if (d >= 1.0) // does a compare.
也许如果您说出您想要实现的目标,我们可以为您指出可以做到这一点的 Java 代码。
于 2010-12-29T21:19:14.977 回答
0
每个对象都有一个 toString 方法,因此您的 JDK 在 NetBeans 中可能没有正确配置。
于 2010-12-29T21:22:08.193 回答
0
你想要(java.lang.)Double
的不是原始的double
于 2010-12-29T21:27:47.190 回答
0
本机类型(int
、float
、double
等)没有方法。
于 2010-12-29T21:32:00.707 回答