Похоже, что переменные двойного типа не имеют методов.Что-то не так с Java или NetBeans? - PullRequest
1 голос
/ 30 декабря 2010

В соответствии с Oracle, я должен иметь возможность применять методы типа .intValue() и .compareTo() к double, но когда я пишу, например, dbl.toString() в NetBeans, IDE говорит мне, что double не может быть разыменован. Я даже не могу привести их к целым числам в виде (Integer) dbl!
У меня JDK 1.6 и NetBeans 6.9.1. В чем здесь проблема?

Ответы [ 6 ]

2 голосов
/ 30 декабря 2010

Методы, которые вы упоминаете, находятся в классе Double (а не в типе double primitive).Всегда эффективнее использовать примитивные типы, но если вам абсолютно необходимы эти методы, создайте новый объект Double, подобный этому:

double d = 10.0;
Double myDouble = new Double(d);
1 голос
/ 30 декабря 2010

Проблема в том, что вы понимаете объекты против примитивов.

Больше всего на свете вам нужно признать, что заглавные имена - это классы объектов, которые действуют как примитивы, которыедействительно необходимо только тогда, когда вам нужно отправить данные из примитивов в метод, который принимает только объекты.Ваше приведение не удалось, потому что вы пытались привести примитив (double) к объекту (Integer) вместо другого примитива (int).

Вот несколько примеров работы с примитивами против объектов:

Класс 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;
0 голосов
/ 30 декабря 2010

Родные типы (int, float, double и т. Д.) Не имеют методов.

0 голосов
/ 30 декабря 2010

Вы хотите (java.lang.)Double не примитив double

0 голосов
/ 30 декабря 2010

У каждого объекта есть метод toString, поэтому, возможно, ваш JDK неправильно настроен в NetBeans.

0 голосов
/ 30 декабря 2010

double - это примитив, а не объект.Как таковой, он не имеет методов.Как правило, вы хотите использовать такой язык:

...