Вопрос:

Странное поведение с Object.intValue ()

java typing autoboxing

6040 просмотра

2 ответа

3638 Репутация автора

Я борюсь с проблемой, которую я не могу понять, почему она не работает. Как передать переменную через 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);
Автор: UKDataGeek Источник Размещён: 25.12.2011 09:23

Ответы (2)


1 плюс

13076 Репутация автора

Вы находитесь в верхнем фрагменте, пытаясь присвоить объект Double типу примитива, подобному этому.

double doubleObj=new Double( doublehelpermethod);

что, конечно, сработает из-за распаковки (преобразования типа-обертки в эквивалентный примитив), но проблема, с которой вы сталкиваетесь, - разыменование doublehelpermethod.

doublehelpermethod.intValue()

невозможно, потому что doublehelpermethodэто переменная примитивного типа, которую нельзя связать с помощью точки. .См. автобокс

Автор: Lion Размещён: 25.12.2011 09:29

3 плюса

32357 Репутация автора

Решение

Это doubleпримитивный тип, а Doubleобычный Java-класс. Вы не можете вызывать метод примитивного типа. intValue()Метод, однако , доступен на Double, как показано на Javadoc

Еще немного чтения об этих примитивных типах можно найти здесь

Автор: Robin Размещён: 25.12.2011 09:34
Вопросы из категории :
32x32