Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Float Constructor


Автор: underW 2.10.2010, 21:07
В соответствии со спецификацией:
Цитата

Float(double value)
          Constructs a newly allocated Float object that represents the argument converted to type float.
Float(float value)
          Constructs a newly allocated Float object that represents the primitive float argument.
Float(String s)
          Constructs a newly allocated Float object that represents the floating-point value of type float represented by the string.


если мы пишем вот такой код:

Код

    int i=10;
    Float f = new Float(i);

то, по идее, мы же в конструктор передаем параметр типа int. Что происходит в этом случае? Правильно ли считать, что в конструкторе переменная i преобразовывается к типу double?

Автор: jk1 2.10.2010, 22:24
Это так называемый widening conversion, он разрешается в следующих случаях:

byte -> short, int, long, float, or double
short -> int, long, float, or double
char -> int, long, float, or double
int -> long, float, or double
long -> float or double
float -> double

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

Автор: underW 2.10.2010, 22:31
Цитата

byte -> short, int, long, float, or double
short -> int, long, float, or double
char -> int, long, float, or double
int -> long, float, or double
long -> float or double
float -> double


значит, в данном случаем у нас преобразование идет к типу float, прально?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)