Вот контекст:
float x = myFunc(23F);
int myFunc(float x) { ... }
Правая часть выражения - int
, и вы правильно сделали вывод, что его значение равно 3
.
Когда выприсваивая значение int
переменной float
, целое число будет преобразовано в float
.
Это пример преобразования примитивного расширения .Это может произойти в различных контекстах, когда вы переходите от «меньшего» примитивного числового типа к «большему» примитивному числовому типу.Тип int
«меньше», чем тип float
.В общем:
byte
<<code>short и char
<<code>int <<code>long <<code>float <<code>double.
Почему мы получаем двойной?
Смотри выше.Но это float
, а не double
.
Когда вы выводите число в Java с использованием println
, float
и double
будут выглядеть одинаково.Метод println
не будет выводить float
с суффиксом F
.Суффиксы F
и D
используются только в исходном коде Java .