Инициализация Двойного объекта с примитивным двойным значением

Что происходит когда java.lang. Двойной объект инициализируется, не используя вызов для конструктора, но вместо этого с помощью примитива? Это, кажется, работает, но я не совсем уверен почему. Там некоторое неявное преобразование продолжает компилятор? Это использует Java 5.

public class Foo {

    public static void main(String[] args) {
        Double d = 5.1;

        System.out.println(d.toString());

    }

}
8
задан Josh Lee 20 July 2010 в 14:02
поделиться

3 ответа

Это называется автобоксинг - функция, которая была добавлена в Java 5. Она автоматически преобразует примитивные типы в типы-обертки, такие как double (примитив) и java.lang.Double (объект-обертка). Компилятор java автоматически преобразует строку:

Double d = 5.1;

в:

Double d = Double.valueOf(5.1);
10
ответ дан 5 December 2019 в 09:23
поделиться

Он называется Автобоксинг

Автобоксинг и Авто-Распаковка Примитивные типы Преобразование между примитивные типы, такие как int, логические, и их эквивалент объектно-ориентированные аналоги, такие как Integer и Boolean, может потребоваться ненужное количество дополнительное кодирование, особенно если Преобразование требуется только для метода вызов API коллекций, для пример.

Автобоксинг и автоматическая распаковка Примитивы Java создают код, который более лаконично и легче следовать. В В следующем примере используется int сохранено, а затем извлечено из МассивСписок. Версия 5.0 оставляет преобразование, необходимое для перехода на a Целое число и обратно в компилятор.

До

ArrayList<Integer> list = new ArrayList<Integer>();
  list.add(0, new Integer(42)); 
  int total = (list.get(0)).intValue();

После

ArrayList<Integer> list = new ArrayList<Integer>();
  list.add(0, 42);
  int total = list.get(0);
5
ответ дан 5 December 2019 в 09:23
поделиться

Это называется автобоксинг.

3
ответ дан 5 December 2019 в 09:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: