Выдержка из пособия по Java:
В Java, в отличие от некоторых других языков, отсутствует автоматическое приведение типов. Несовпадение типов приводит не к предупреждению при трансляции, а к сообщению об ошибке. Для каждого типа строго определены наборы допустимых значений и разрешенных операций.
Однако практический пример работает (производится вычисление между операндами разного типа):
public class MyClass {
public static void main(String args[]) {
int y = 54;
double x = 1.543E4;
char f = '2';
double h = y*x*f;
System.out.println(h);
}
}
В пособии имеется ввиду что-то другое? Приведите, пожалуйста, пример несовпадения типов.
Скорее всего имеется ввиду ситуация с выполнением присваивания;
Данный фрагмент кода скомпилируется в C, но приведёт к ошибке компиляции в Java:
double a = 3.2;
int b = a;
UPD:
В Java есть приведение примитивов по следующей цепочке:
byte –> short -> int –> long –> float –> double
т.е. когда у вас есть int a = 1; long b = 2;
то результат арифметической операции a*b
будет long
.
Это связано с определением чисел, например в byte
всего 1 байт которое может содержать число от -127 до 128, в int попадает весь диапазон чисел byte
, потому что там 4 байта, float
и double
могут содержать числа в экспоненциальной форме, так что они могут представлять long
и т. п.
Рекомендую - Шилдт Г. - Java 8. Полное руководство - 2015. Там очень хорошо все об этом описано. По поводу вашего примера добавьте - String str="string"; h = yxf+str; и увидите что получится.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня есть относительно чистый код интерпретатора brainFuck на java, могли бы вы дать несколько советов по его улучшению в плане чистоты кода, и, если...
Работаю с готовой БДПри запуске приложения копирую из Assets в каталог БД приложения по пути:
Относиться ли перегрузка метода к полиморфизму в языке Java? Как я знаю только переопределение метода относиться к полиморфизму в языке Java, а перегрузка...
У меня в приложении при определённых обстоятельствах вылезает поле toast с подсказкамиДопустим, поле toast ещё отображается, а приложение закрыли...