2013-08-19 2 views
2

В чем разница между способами, в которых мы используем следующие 2 конструктора в классе обертка Float в Java Float(float value) и Float (double value)Поплавок Конструкторы класса

Аналогично между 2 конструкторами Float(double value) и Double(double value)

ответ

3

Конструктор Float(float) создает объект оболочки Float с заданным значением. Конструктор Float(double) создает и объект с данным аргументом, отлитым от float, теряя часть точности значения double. От the source:

public Float(float value) { 
     this.value = value; 
} 

public Float(double value) { 
     this.value = (float)value; 
} 

Double(double) конструктор с другой стороны, создает объект Double оболочки с заданным значением double.

0

Наличие конструкторов кросс-типа - это просто удобство, когда вы имеете значение с плавающей точкой одной точности и нуждаетесь в объекте, удерживающем другой. Перемещение с double на float теряет точность, и переход от float к double повышает точность (но фактическое значение сохраняется только с нулями). Эти два конструктора являются эквивалентом ручной отливки для другой точности.

2

Have a look at source code

 public More ...Float(float value) { 
480  this.value = value; 
481 } 


Constructs a newly allocated Float object that represents the argument converted to type float. 
Parameters: 
value the value to be represented by the Float. 
488 
489 public More ...Float(double value) { 
490  this.value = (float)value; 
491 } 

только литье this.value = (float)value;

1

Там нет конкретной разницы между Float (значением с плавающей точкой) и Float (двойное значение), последний раз бросить двойной параметр, чтобы плавать представление.

См исходный код этого методы:

public Float(float value) { 
    this.value = value; 
} 

public Float(double value) { 
    this.value = (float) value; 
}